UserScript
問題のコードは a の一部であり、通常の DOM ルールと Javascript メソッドは機能しないということから始めましょう。
状況は次のとおりです。
オンライン チャット サイトとやり取りする UserScript を作成しました。button
ユーザースクリプト内で生成されるものがいくつかあります。これらのボタンの一部はフォーム内にありますが、多くはそうではありません。
GreaseMonkey を介して追加された要素は、2 つの世界に存在します。それらはページ DOM に存在し、UserScript のわずかに高い世界に存在します。つまり、これらの行は次のようになります。
event.preventDefault = true;
event.stopPropagation = true;
残りのUserScript
アクションが実行されないようにしますが、ボタンによるフォームの送信は停止しません。
回避策として、 のspan
代わりに要素を構築していbutton
ます。これは機能しますが、実際にはチャット ルームの視覚的なレイアウトが崩れます。
投稿UserScripts
を防ぐために追加された要素を防ぐ方法を知っている人はいますか? form
それができなければ、誰かがspan
ネイティブのように見せる方法を知っていることを夢見ますbutton
.
編集:動作しているように見えるソリューションがありますが、すべての UserScript 環境で完全にテストしていません:
// Yes, yes, poorly named but it was a SPAN
// userWindow is an alias for unsafeWindow.
// (Used to run under a userScript environment for IE and I had to emulate a lot)
var span = document.createElement("input");
span.value = text;
span.type = "button";
span.className = "cpbutton";
// Add it to the body just long enough to set up a page-level, DOM0 event handler
var body = userWindow.document.getElementsByTagName("body")[0];
var tname = "IAmTheVeryModelOfAModernMajorGeneral";
span.id = tname;
body.appendChild(span);
userWindow.document.getElementById(tname).onclick = function() {return false;};
body.removeChild(span);
span.id = "";