私はjQueryを使うのはかなり新しいですが、現時点ではSafari Extensionに取り組んでいて、ページにテキストを追加するというちょっとしたパズルに遭遇しました。
基本的に、私は要素内のページ上の別のものと一緒にテキストの特定の文字列を追加する拡張子を作成しています
<td id="name">foo</td>
次のjQueryコードを使う
jQuery("#name").filter(function()
{return jQuery(this).text() == "foo"; }).append("bar");
これは
<td id="name">foobar</td>
これは標準のHTMLページではうまく機能しますが、 - 私が実行したいサイトでは、要素内のコンテンツを動的にロードするために別のJSを使用しているため、サイトでテストすると、要素は次のように表示されます。
<td id="name"></td>
JSライブラリはそれに名前を追加します。つまり、テキストを追加することはできません(名前はブラウザウィンドウに表示されますが、ページのソースには表示されません)。
私は、
$(window).load()
これは効果がありませんでしたが。
回答:
回答№1は1"foo"を書いている他のスクリプトが実行された後に実行されるように、スクリプトを遅らせる必要があるように思えます。一般的にjqueryスクリプトはドキュメントのロード時に実行されます。
$(function(){ /* script */ });
もしそれが早すぎるのであればバインドする必要があるかもしれません"foo"が書かれたときに発生するイベントで、他のスクリプトにフックする必要があるかもしれません。質問から明らかになっていないのは、これが "foo"を書いたajaxのこと、あるいは追加の負荷がない別のスクリプトだけだということです。
それでも解決できない場合は、setTimeout()呼び出しを使用してスクリプトを遅らせることができますが、それはあいまいなためお勧めできません。