2011-10-06 4 views

答えて

0

関数を定義して、本文の末尾のスクリプト要素に直接書き込むことができます。例:

function myFunc() { 
    // ... 
}  

document.body.addEventListener('load', function() { 
    var script = document.createElement("script"); 
    script.textContent = "(" + myFunc.toString() + ")();"; 
    document.body.appendChild(script); 
}, false); 
+0

こんにちは私はGreaseMonkeyでこのコードを試しました。警報は消えませんでした。 function myFunc(){ アラート( 'works'); } document.body.addEventListener( 'load'、function(){ var script = document.createElement( "script"); script.textContent = "(" + myFunc.toString()+ ")() ; "; document.body.appendChild(script); }、false); – sesquipedalians

+0

正直なところ、私は今Firefoxをインストールしていない。私はちょうど私の古いスクリプトの一部をあなたの必要に合わせて作った。ここで働いていないものを理解しようとするだけです。それは近くになければならない。おそらく、それは正しく動作しない 'body.addEventListener'です。 –

2

直接ここに答えるために:

var newElem = document.createElement('script'); //create a script tag 
newElem.type = 'text/javascript'; // add type attribute 
newElem.innerHTML = 'function myFunc() { alert("alerting"); } myFunc();'; // add content i.e. function definition and a call 
document.body.appendChild(newElem); // Insert it as the last child of body 

正式な方法ですが、最短で挿入したい

document.body.appendChild(document.createElement('script')); 
document.body.lastChild.innerHTML = 'function myFunc() { alert("the alert"); } myFunc();'; // add content i.e. function definition and a make a call 

しかし、あなたの質問の説明が混乱して、可能性があり関数をページに追加し、それをGMで呼び出しますか?なぜそれをページに挿入するのですか?上のコードでは、コールはGMではなくページスコープ内にあることに注意してください。この場合、GMから呼び出すことはできません。安全ではないが、通常は推奨されないように、コールする次のようなページにノードを挿入する必要があります:

someplace.innerHTML = '<a onclick=myFunc()>Execute myFunc</a>'; 

この機能を挿入するには、ページスコープにする必要がありますか?あなたは、GMスコープからそれを呼び出すことはできません。単にGMスコープにその機能を残しておかないと、それは挿入されません。

関連する問題