IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
あと、動作の細かな話ですが、オリジナルのAutoPagerizeとかぶってしまう(二重に読み込まれてしまう)ため、あえてa要素のrel属性(rel=”next”)を外して対処しています。 そろそろAutoPagerizeを標準的に導入していったらどうか - Liner Note 同じ機能を提供するユーザースクリプト (Greasemonkey スクリプト、Web ページに変更を加えるブラウザの拡張機能など) と製作者スクリプトがあった場合、その競合をどう解決するかということについて。最初は単にユーザースクリプト (ここでは特に AutoPagerize) を製作者スクリプトから無効化できるようにすればいいのかなと思いましたが、「3:14 - UserAgentの使い方について」を読んで考えを改めました。 ユーザースクリプトはブラウザの機能を補うものであり、ブラウザがもともと持っている機能と
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
はじめに 「新はてなブックマーク」になったということで、とっても便利になったのですが、ブックマーク一覧ページ*1が若干 JavaScript に時間が掛かっているみたいです。 というわけで 調査してみたいと思います。調査して、改善できそうなところは後で纏めて「はてなアイデア」にでも登録しようと思います。 この日記は調査しながら、過程を書いていくつもりです。 準備 まずは、人のサイトの JavaScript を書き換えて試してみるための環境を作ります。 作業用ディレクトリを作る とりあえず、ホームに HatenaJS というディレクトリを作ります。 $ mkdir HatenaJS $ cd HatenaJS CocProxy をダウンロードしてくる 以下から CocProxy というツールをダウンロードしてきます。 http://coderepos.org/share/wiki/CocPr
RubyのObject#tapがすごく便利。tapかわいいよtap - (rubikitch loves (Emacs Ruby CUI Books))に書いてある。これを使うと、selfを返さないメソッドを使ってもチェインできる。 JavaScriptだと、こんな感じ。 Object.prototype.tap = function (fn) { fn.call(this, this); return this; }; ただ、JavaScriptだとyieldブロックがないから、少し野暮ったい。もう少し動作を限定させて、 Object.prototype.tap = function (name) { this[name].apply(this, Array.slice(arguments, 1)); return this; }; [1, 2, 3] .tap('push', 4, 5
追記:最速インターフェース研究会 :: Firefoxでの開発を高速化する自動リロードスクリプトで既出でした。 デモを 2008-11-03_1209 - javascripter's library に置いた。 ライブラリ本体は javascripter's gist: 21788 — Gist にある。 (function () { var last = null; (function request() { with (new XMLHttpRequest()) { open('get', location.href, true); send(null); onload = function () { if (!last || last == this.responseText) { last = this.responseText; setTimeout(request, 500)
Web ページの選択範囲に含まれるリンクを取得する方法として、Piro さんによる DOM 2 Range の compareBoundaryPoints メソッドを使ったやり方があります。これはリンクを探すのに DOM Core の機能を使って文書ツリーをたどっていますが、今現在ノードを探すといわれて真っ先に思いつくのは XPath でしょう。そこで、XPath を使って選択範囲のリンクを取得する方法を考えてみました。もちろん、選択範囲を扱う以上 DOM 2 Range も利用します。 基本的な考え方 Range オブジェクトの取得 選択範囲の始点より前にあるリンクの数の取得 選択範囲の終点より前にあるリンクの取得 選択されているようには見えないリンクの除外 まとめ 基本的な考え方 基本的なアイデアは、選択範囲の終点より前にあるリンクで、選択範囲の始点より前にはないものが求めるリンクとい
前回のつづき。 さて、大体 window.name によるクロスドメイン通信がどんなものかで、dojo のwindowNameモジュールがどんなことやってるかはわかった。個人的にdojoはすばらしいことをやっていると思うが、これだけのために常にdojoを使う気にはならない。ので、可能な限りポータブルなライブラリを実際に自分で実装してみることにする。 実装前におさえておきたい前提 クロスドメインでリクエストを送るためには、ターゲットとなるリソースが配置されているサーバの同一ドメイン上に、プロキシの役割を担うHTMLファイルがあらかじめ配置可能である必要がある。これはFlashで例えればcrossdomain.xmlのようなもので、リソース側がクロスドメインのリクエストをオプトインしている、と考えればよい。さらにポリシーを記述することができるという点でもよく似ている(これは後述)。 何らかの静
随分前になるが、SitePenの人 (dojo) が書いたブログに window.nameを使ったクロスドメイン通信についてまとめられていた。 window.name Transport - Blog | SitePen 気になっていたがちゃんと読む時間がなかったので、今ごろ見てみる。抜粋して訳。 window.name による通信 The window.name transport is a new technique for secure cross-domain browser based data transfer, and can be utilized for creating secure mashups with untrusted sources. window.name is implemented in Dojo in the new dojox.io.windowN
Ver 1.1との違い XMLDocument, HTMLDocumentを区別し動作する HTMLDocument(content-type: text/html) なら タグ名の大文字/小文字を無視して要素を検索するが、XMLDocument(content-type: application/xml or application/xhtml+xml or text/xml)なら区別する。 精度の向上 W3Cの公式テストのうち、テスト可能な約100項目のほぼ全てをパスするようになった。 テストできない項目は、擬似クラス系(:active, :hover, :focus), 動的擬似要素系(::after, ::before, ::selection, ::first-letter, ::fitst-line), @namespace系 と :not系 uupaa-selector.js
Bookmarklets are simple tools that extend the surf and search capabilities of Netscape and Explorer web browsers. See Bookmarklets Home Page - free tools for power surfing for details. Takeshi Nishida provides a useful tool for developing and publishing your original bookmarklets: Bookmarklet Editing Environment (in JScript). Contents General Forms of Bookmarklets Examples of Bookmarklets Improvin
サンプルコード (HTML) 2つの div 要素を配置し、一方をドラッグ元、もう一方をドロップ先とする。 ドラッグ元となる div 要素には、「draggable=”true”」属性をセットしなければならない。ただし、リンク(a 要素)や画像 (img 要素)などは、「draggable=”true”」を指定しなくても自動的にドラッグ可能となる。 ドラッグ元の要素には ondragstart, ondrag, ondragend の3つのイベントハンドラを追加し、ドロップ先の要素には ondragenter, ondragover, ondragleave, ondrop の4つのイベントハンドラを追加する。ただし、必要最低限のドラッグ&ドロップを実装するのであれば、 ondrag, ondragend, ondragleave は省略しても問題ない。 <html> <head> <ti
Array#mapなどを使う時、配列の要素に対して要素のメソッドを適用したいことがよくあるけど、普通はこう書かなきゃいけない。 [1, 2, 3, 4, 5].map(function (n) { return n.toString() }); こう書きたい。 [1, 2, 3, 4, 5].map(expand.toString()); // expandが1, 2, 3, 4, 5に置換されるようなイメージ 下のようにすれば、単にメソッドを適用したい時にいちいち無名関数を書かなくてよくなる。 var expand = { __noSuchMethod__: function __noSuchMethod__(prop, args) function (parent) parent[prop].apply(parent, args) }; "__defineGetter__ __defi
addEventListener("DOMContentLoaded")だと、DOM構築後にリスナを設定した場合一度も呼ばれないので、ブックマークレットのようにいつ実行されるか分からないような時には使えない。 WebKitだと、document.readyStateがあるから、それを使えばいいけど、Firefoxにはない。 function ready(fn) { if (ready.loaded) { fn(); return; } var script = document.createElement("script"); script.defer = "defer"; script.type = "text/javascript"; script.src = "data:text/javascript,void 0"; script.onload = function () { fn
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く