のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,908人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    元スレ+ JavaScript の質問用スレッド vol.103 +

    JavaScript覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    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
    /^(?:[^?/#]*/)*([^?/#]*)/


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について