0

YouTube ページにスクリプトを挿入する Greasemonkey スクリプトを作成し、スクリプトが読み込まれた後、コンテンツのテキストを置き換えます ("Download" を日本語の単語に置き換えます (この質問では、代わりに "TEST" を使用します))。

ただし、スクリプトは思いどおりに動作しません。

これをhtmlに挿入したかったのです。

<script type="text/javascript" src="http://userscripts.org/scripts/source/25105.user.js" onload="var elements=document.getElementsByClassName('yt-uix-button-content') ;for(var i=0;i<elements.length;i++)elements[i].innerHTML.replace('Download','TEST');"></script>

しかし、実際に挿入されるのはこれです (onload="" がありません。);

<script type="text/javascript" src=" http://userscripts.org/scripts/source/25105.user.js"></script >

何が問題ですか?

// Start script
window.addEventListener("load",function(){
if ((document.URL.match("www.youtube.com/watch?"))||(document.URL.match("c.youtube.com/videoplayback?"))) {
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://userscripts.org/scripts/source/25105.user.js';
script.onload = "var elements=document.getElementsByClassName('yt-uix-button-content');for(var i=0;i<elements.length;i++)elements[i].innerHTML.replace('Download','TEST');"; //Not working
head.appendChild(script);
};},!1);
// End
4

1 に答える 1

0

次のようなものを試してください:

window.addEventListener("load", function(){
    if ((document.URL.match("www.youtube.com/watch?"))||(document.URL.match("c.youtube.com/videoplayback?"))) {
        var head = document.getElementsByTagName('head')[0];
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = 'http://userscripts.org/scripts/source/25105.user.js';

        if( script.readyState ) {
            script.onreadystatechange = function() {
                if( script.readyState == 'loaded' || scriptTag.readyState == 'complete' ) {
                    script.onreadystatechange = null;
                    scriptHandler();
                }
            };
        }
        else {
            script.onload = function() {
                scriptHandler();
            };
        }
        head.appendChild(script);
    }
},false);


function scriptHandler() {
    var scriptContent = document.createElement('script');
    var s = document.getElementsByTagName('head')[0];
    scriptContent.type = 'text/javascript';
    scriptContent.text = "var elements=document.getElementsByClassName('yt-uix-button-content');for(var i=0;i<elements.length;i++)elements[i].innerHTML.replace('Download','TEST');";
    s.appendChild(scriptContent);
}
于 2013-09-16T10:25:39.673 に答える