Tampermonkey を使用して Opera にユーザースクリプトを書き込もうとしています (ViolentMonkey を試しても同じ結果が得られましたが)。このスクリプトは、ルーターの構成ページで実行され、表示される統計に基づいていくつかの値を計算します。
問題は、それが .asp ページであり、frameset
(body 要素はありませんが、これが asp にとって正常かどうかはわかりませんが、使用したことはありません) とそのframe
中に 3 つの要素しかないことです。いくつかの DOM メソッドを試した後、URL が変更されないため、実際にページ上の内容を検出するためにいくつかの非常に洗練されていないアプローチが必要になりますが、MutationObserver
どれがお尻を蹴るかにつまずきましたが、イベントを返すことができないようです。私が何をしようと。
MutationObserver
試着すると動作し、google.com
正常に報告されます。これまでの私のコードは、この機能のテストにすぎないため、ここMutationObserver
からコピー/貼り付けしたもので、次のようになります (わずかに変更されています)。
// ==UserScript==
// @name meh
// @match http://192.168.1.1/cgi-bin/index.asp
// @run-at document-end
// ==/UserScript==
// MDN code starts here
var target = document.body;
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
console.log(mutation.type);
});
});
var config = { attributes: true, childList: true, characterData: true, subtree: true };
observer.observe(target, config);
// end of userscript
この正確なコードは、で完全に正常に動作しgoogle.com
ます。また、@match
オブザーバーをコンソール (ここには示されていません) に記録して、適切な URL と一致することを確認するため、ディレクティブは問題ではありません。
などのターゲットとしてさまざまな要素を試しました(それが問題だった場合)、構成の有無にwindow.frames['framename'].document.body
かかわらず、ディレクティブに使用してみました。何があっても、コンソールにログインするミューテーションはありません。subtree
document-start
@run-at
この特定のケースに関してオンラインで何も見つけることができなかったので、質問する必要があります.aspページについて混乱する可能性のある特別なものはありますか、それともsとsとMutationObserver
関係がありますか?frame
frameset
編集 - 非常に皮肉なことに、ルーターのインターフェイス以外で自分のコードをテストできるオンラインの唯一の場所は、The World's Worst Websiteです。frameset
jsfiddle や codepen でさえ、 andに我慢できませんframe
。