元スレ+ JavaScript の質問用スレッド vol.103 +
JavaScript覧 / PC版 /みんなの評価 :
251 = :
>>250
あんがと、助かった
そろそろDreamweaverCS3ともお別れかな
253 = :
フォントといえば数時間前アドビが何か出してたな
ソースコードを表示するためのフォント「Source Code Pro」をアドビが無料公開
http://engawa.2ch.net/test/read.cgi/poverty/1348539877/
> プログラミングやマークアップなど、コーディング作業のときにソースコードを表示する目的で開発されたフォント「Source Code Pro」を米アドビがオープンソースとして無料公開しました。
> 以下がSource Code Proの見本。
>
256 = :
なんという手抜きネーミング
257 = :
色々寄り道して結局EmEditor Pro買ったわ
フォントは前からVLゴシックを使っているけど、
コロンとセミコロンが結構紛らわしい
258 = :
質問です
Array.prototype.sort がChromeで不安定だったので実装し直しました
目的の結果は得られたのですが、ライブラリとして使いやすくするために
比較関数は省略出来るようにして、Array.prototype.sort と同じ比較方法をとりたいのですが
Array.prototype.sort が使用している比較関数を取り出す方法はないでしょうか?
259 = :
>>258
If omitted, the array is sorted lexicographically (in dictionary order) according to the string conversion of each element.
とのことなので、比較関数が省略されたときは各要素を文字列として辞書順にソートされるっぽい
実際のアルゴリズムは実装依存では?
http://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/sort
260 = :
>>259
ありがとうございます。
なるほど、自前で実装するしかなさそうですね
単純に不等号で比較する関数を作ることにします
261 = :
>>258
具体的にはどこが不安定だったのでしょう?
262 = :
>>258-260
その仕様を満たせばいいのなら String(a) > String(b) とかで比較ればいいだけでは。
しかし「不安定」ってのはホント? 不安定だということを示す例キボン。
263 = :
258じゃないけど。
var a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
a.sort(function () {return 0;});
console.log(a); // [9, 1, 3, 4, 5, 6, 7, 8, 2, 10, 11, 12, 13, 14, 15, 16]
chromeは不安定なソートを使っているようだね。(quicksortかなあ)
mozilla系は安定なソートらしいが。
265 = :
ああ、そういう意味か、安定的ね。不安定って言われたら整列に失敗するとかそいういう
トラブルを思い浮かべると思うなー。で、自分で整列を書かなくても、キーの後ろに
元の列での並び順をくっつけてから整列し、最後にくつつけたものをはがせば安定ソート
できるよね。まあそうしたいかどうかは本人が決めるとして。
266 = :
配列のシャッフルのアルゴリズムを簡略したくて、
[1,2,3,4,5,6].sort(function(){ return Math.random() - .5; })
と書いて大怪我した事がある。実際に動かしたら笑うに笑えない結果になった
267 = :
これか。
http://la.ma.la/blog/diary_200608300350.htm
268 = :
$('html,body')
っていうの見たんですが、JavaScriptだけでhtmlエレメントを取得するのってどうやるんですか?
bodyなら
body = document.getElementsByTagName('body')[0]
でいけそうですが
269 = :
>>268
document.defaultView
270 = :
>>269
へぇ~
こんなんあったんですね
ありがとうございました
271 = :
>>270
ごめん間違えた
そっちはwindowを取得する奴
htmlは
document.documentElement
272 = :
>>271
そっちでしたか
ありがとうございました
273 = :
ブラウザ内の画面をキャプチャするために
javascriptだけでもできますか?
274 = :
>>273
ライブラリを使えば可能
http://html2canvas.hertzen.com/
あと、Firefoxで、かつ特権がある場合はcanvasのdrawWindowメソッドで可能
http://developer.mozilla.org/ja/docs/Drawing_Graphics_with_Canvas#_.E3.81.95.E3.82.89.E3.81.AA.E3.82.8B.E6.A9.9F.E8.83.BD_
275 = :
スムーズスクロールを実装できたんですが、#つきのページを読み込んだ後もスムーズにスクロールしたいです。
現在はページを開いてから#付きのリンクをクリックするとその位置までスムーズにスクロールするというところまで出来ています。
#つきのページを読み込んだ後にもスムーズにスクロールさせるには、#付きのページを開いたときに自動でその位置まで移動するデフォルトイベントをまず止めなければなりません。
そこでwindowオブジェクトのonloadイベント時にcancelBabble,returnValueもしくはstopPropagation(),preventDefault()でとめようと思ったんですが、
効果がありませんでした。
どうすればいいでしょうか?
277 = :
ロードしたあとから飛び先のidなりnameなりつければいいんじゃね?
278 = :
ロードした後って言ってもURLには最初から#nameがついてしまってるので、
デフォルトの動作としてこの名前を持つidもしくはnameのところに飛んでしまいますよね?
この動作をとめて、スムーズにその位置までスクロールさせたいんです。
不可能なんでしょうか?
279 = :
>>278
DOMContentLoadedのタイミングでscrollTo(0, 0)すればよさげ
280 = :
>>278
> この名前を持つidもしくはname
それをHTMLの段階では付けないようにするのはどうか
ってことなんだけど。
data-id="" なんかにでも入れておいて。
281 = :
>>279
ありがとうございます!
ieはこのイベントないんですね。。
今doScrollで対応しようと頑張ってます。
>>280
つまりidやname属性を使わなければurlの末尾に#を含む文字があっても自動で移動せずに済むってことですよね?
確かに良い方法ですね
一応DOMcontentLoadedで実装は出来たんですが、
例えばその#URL付きのページを下に少しスクロールした状態でリロードすると、
ブラウザがそのスクロール位置まで自動的に移動させてしまいますよね?
そのイベントはとめられないんでしょうか?
動作的には、
スクロール位置を少し下げた状態でページをリロード
↓
スムーズスクロールで#nameの場所までスクロール
↓
最初の少し下げたスクロール位置まで戻る
こういう動作になってしまいます。
283 = :
そうですか・・・
すいません
イメージとしては日テレの番組表なんですよ
http://www.ntv.co.jp/program/
このページだと少し下にスクロールした状態でリロードしても指定した位置までスムーズスクロールして、
そこでちゃんと止まってくれてます
今解析中なんですけどねー。
もうちょっと頑張ってみます。
284 = :
aタグのhref=に#nameが混じったURLが入ってると、IEだけ一旦そのnameのid or name属性を持つ位置まで移動した後、
すぐスクロールが一番上まで戻ってしまうんですけど何が原因ですか?
JavaScript無効にすると発生しません。
っていってもどっかのjavascriptにそういう動作させるコードが書いてあるんでしょうけどね。。
285 = 276 :
>>283
そのページのは規定通りの動きだと思う
ページの途中までスクロールした状態でリロードすると
その位置までスクロールした状態になるのはブラウザの実装。
で、JSが発火して現在の時刻の位置めがけてスムーズスクロールする
URLのlocation.hashで指定されたIDの位置に移動するのとは
全く関係ない話だと思う
286 :
>>285
あ、すいません。
ちょっと伝わりにくかったようです。
location.hashで指定されたID位置に移動する件に関しては、DOMContentLoadedのときにデフォルトの動作をとめることで解決できたんですが、
今度やりたいのは日テレの番組表みたいに、
途中までスクロールした状態でスクロールすると、その位置までスクロールした状態になる動作をとめたいんです。
日テレのやつは、途中までスクロールした状態でリロードしても最初から現在の時刻めがけてスムーズスクロールしてくれますよね?
これはブラウザの基本動作である途中までスクロールしておいた位置に戻る、という動作がストップされてるから出来るんだと思いますが、
その方法がわかりません。
どのイベントのデフォルトの動作をストップさせれば出来るのかがわかればいいんですが。。
今現在はwindowオブジェクトのDOMContentLoadedが発生したときにスクロールしています。
でもこれだと、
途中までスクロールした状態でリロードする
↓
スムーズスクロールでhashで指定された要素までスムーズスクロールする
↓
途中までスクロールしてた位置まで戻っちゃう
今はこんな感じです。
どのイベントをとめれば最後のステップの動作をさせずに済むのかわかりません
288 = :
ajaxで内容を追加しているからとかじゃね?
リロードするとHTMLから再構築するわけだから、先頭に戻ると…
未確認だが。
289 = :
>>287
戻っちゃうのはChromeです。
あ、戻っちゃうのは日テレの番組表での話しじゃなくて自分が今テスト環境でやってるコードの方での話ですよ。
日テレの番組表でやったらおっしゃるとおりの動作になりました。
言われるまで日テレの番組表をChromeでしか見てませんでした。
IEやFireFoxの動作を見ると完全に読み込んでからスクロールしてるっぽいので、
onload完了後に動かして見るとか色々やってみます。
そうすればChromeでもスクロールした後に戻るっていうへんな動作は無くなりそうな気がするので。
まあChromeみたいにリロード後スクロール量ゼロになってから、規定位置までスムーズスクロールさせるっていう理想の形ではないですけどね。
その辺もスクロール量を一旦ゼロにしてから動かすとか色々やってみます。
290 = :
>>288
Ajaxは一切使ってません
291 :
URLからファイル名(拡張子含む)だけを抽出したいのですが、どうしたら良いでしょうか?
正規表現を使えばいいみたいですが、わからないので教えてください。
このような文字列を
var url = "";
↓こうしたい
var file = "image.jpg";
お分かりになる方ご教授お願いします。
292 = :
URL に必ずパス部があると仮定するなら簡単。
クエリとフラグメントと、URL 先頭から最後の "/" までを削除。
var file = url.replace(/\?.*$/, "").replace(/#.*$/, "").replace(/.*\//, "");
293 = :
>>291-292
「/」でsplitして最後の要素を取るのがいちばん素直だと思うが。
294 = :
何言ってんだ
295 = :
>>293
http://hoge/hoge.php?hage/fuga
296 = :
URL後方から「/」が見つかるまでサーチ&コピー。とかでいんでね。
297 = :
何言ってんだ
299 = :
>>274
どうもありがとうございます。
firefoxアドオンの開発で参考にしたかったのでたすかります。
もう一つ質問があるのですが
canvasでキャプチャした画像を左右に分割したブラウザの片方に表示させることはできますか?
ブラウザは<hbox>を使って分割されています。
既存のWebページは表示させられるのですが調べてもわからなくて困っています。
300 = :
>>291
/^(?:[^?/#]*/)*([^?/#]*)/
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.113 + (1001) - [97%] - 2014/3/15 21:30
- + JavaScript の質問用スレッド vol.107 + (1001) - [97%] - 2013/9/7 10:16
- + JavaScript の質問用スレッド vol.123 + (966) - [97%] - 2020/10/20 2:30
- + JavaScript の質問用スレッド vol.113 + (1001) - [97%] - 2014/1/25 12:46
- + JavaScript の質問用スレッド vol.133 + (1001) - [97%] - 2018/6/8 10:45
- + JavaScript の質問用スレッド vol.123 + (1002) - [97%] - 2015/4/27 23:30
- + JavaScript の質問用スレッド vol.108 + (1001) - [97%] - 2013/9/21 15:16
- + JavaScript の質問用スレッド vol.109 + (1001) - [97%] - 2013/10/7 13:16
- + JavaScript の質問用スレッド vol.106 + (1001) - [97%] - 2013/7/20 9:30
- + JavaScript の質問用スレッド vol.105 + (1001) - [97%] - 2013/5/20 4:45
- + JavaScript の質問用スレッド vol.104 + (1001) - [97%] - 2013/1/28 4:00
- + JavaScript の質問用スレッド vol.102 + (1001) - [97%] - 2012/9/11 17:30
- + JavaScript の質問用スレッド vol.101 + (1001) - [97%] - 2012/7/16 14:15
- + JavaScript の質問用スレッド vol.143 + (753) - [97%] - 2020/4/19 5:00
- + JavaScript の質問用スレッド vol.100 + (1001) - [97%] - 2012/6/13 22:46
- + JavaScript の質問用スレッド vol.120 + (1002) - [95%] - 2014/11/8 1:15
- + JavaScript の質問用スレッド vol.125 + (1001) - [95%] - 2015/10/7 17:45
トップメニューへ / →のくす牧場書庫について