0

最新の Chrome ブラウザ用のユーザー スクリプトを作成しました。ロード後にスクリプトがページの変更されたコンテンツを取得できないようです (たとえば、ページがロードされた後、[sth?] をクリックすると埋め込みウィンドウがポップアップ表示されました)。

を使用window.setTimeout()しても、 を介してタイマー コールバックで更新されたコンテンツを取得できませんdocument.getElementById()。ページを調べたところ、popup 要素が DOM に存在することがわかりました。

これはユーザー スクリプトの制限ですか? または、ユーザースクリプトで更新を取得するために他の方法を使用できますか?

更新:DOMSubtreemodified提案どおりにイベント を試しました。しかし、動作はまだ奇妙です。

my.safaribooksonline.com のユーザースクリプトに、JavaScript を 1 行だけ追加しました。

document.addEventListener("DOMSubtreeModified", function () {
    alert(eval('typeof OpenSignInPopup')); });

しかし、アラート ボックスには、評価結果として「未定義」と表示されOpenSignInPopupます。しかし、同じページのスクリプト コンソールでアラート ステートメントを同時に実行し、結果を「関数」として表示することができます。

この関数は、ユーザー スクリプトが最初に実行されたときに読み込まれませんでした。では、ユーザースクリプトでどのように使用できますか?

4

1 に答える 1

1

関連するコード スニペットや対象となるページなどの詳細を提供する必要があります。

一般に、DOMSubtreeModifiedクロムでイベントを発生させることができます。これにより、変更された DOM にアクセスできるようになります。

また、新しいコンテンツが iframe に含まれていないことは確かですか?

新しい OP 情報の更新:

ただし、OpenSignInPopup の評価結果として、アラート ボックスに「未定義」と表示されます。

Chrome では、Greasemonkey コードはそのようなページの JS 関数と対話できません。コードをページに挿入する必要があります。詳細については、この SO の回答を参照してください。

于 2010-10-13T08:21:25.557 に答える