-1

私はコンピューター サイエンスやプログラミングを専攻していない学生ですが、外国人でインターネット用語を理解していない両親のためにスクリプトを探していました。

userscripts.org で以下のスクリプトを見つけました (すべて作者の功績によるものです)。しかし、私の両親は頑固すぎて IE9 から Chrome や Firefox に切り替えることができないので、IE7Pro をダウンロードしてそこにスクリプトをインストールしました。

ここでの問題は、IE9 にインストールされているユーザー スクリプトがまったく機能しないように見えることであり、その理由を突き止めようとしています。Chrome/Firefox と Internet Explorer の JavaScript に基本的な違いはありますか?

これらを修正して IE で動作させるにはどうすればよいですか? 私は C プログラミングの入門クラスを受講しただけで、この分野の経験はほとんどないので、誰かが簡単に説明してくれると助かります。

これが参照用のコードです。誰かがどこで/なぜそれが機能しないかを指摘できれば、それは大きな助けになります。長すぎず、本当に学ぶ必要のないことを学ぶのに数え切れないほどの時間を節約できます. どうもありがとう。

var words = {
    ///////////////////////////////////////////////////////
    // Syntax: 'Search word' : 'Replace word',
    "your a": "you're a",
    "im*o": "in my honest opinion",
    ///////////////////////////////////////////////////////
    "": ""
};

//////////////////////////////////////////////////////////////////////////////
// This is where the real code is
// Don't edit below this
//////////////////////////////////////////////////////////////////////////////

// prepareRegex by JoeSimmons
// Used to take a string and ready it for use in new RegExp()
String.prototype.prepareRegex = function () {
    return this.replace(/([\[\]\^\&\$\.\(\)\?\/\\\+\{\}\|])/g, "\\$1");
};

// Function to decide whether a parent tag will have its text replaced or not
function isOkTag (tag) {
    return (
        new RegExp (
            "(," + tag + ",) | (," + tag + "$)",
            "g"
        ).test (",pre,blockquote,code,input,button,textarea")
    ) == false;
}

// Convert the "words" JSON object to an Array
var regexs          = new Array(),
    replacements    = new Array();

for (var word in words) {
    if (word != "") {
        regexs.push (new RegExp (word.prepareRegex ().replace (/(\\)?\*/g, function (e) {
            return ((e !== "\\*") ? "[^ ]*" : "*");
        } ), "gi"));
        replacements.push (words[word]);
    }
}

// Do the replacement
var texts = document.evaluate (
        ".//text()[normalize-space(.)!='']", document.body, null, 6, null
    ),
    text = "",
    len = regexs.length;

for (var i = 0, l = texts.snapshotLength;  (this_text = texts.snapshotItem(i));  i++) {
    if (isOkTag (this_text.parentNode.tagName)  &&  (text = this_text.textContent) ) {
        for (var x = 0;  x < len;  x++) {
            text = this_text.textContent = text.replace(regexs[x], replacements[x]);
        }
    }
}
4

2 に答える 2

0

document.evaluateは IE ではサポートされていません。スクリプトが何をするかわからないので、実際のブラウザをインストールする方が簡単かもしれません。

おそらくjQueryがあなたを助けることができます。

于 2012-12-26T17:19:40.443 に答える
0

Internet Explorer のユーザー スクリプト サポートはむらがあり、急速に時代遅れになっています。とはいえ、 IE7Proを IE9 で動作させることに成功したという報告もあります。

しかし、IE の JavaScript と、Chrome、Firefox などの JavaScript はまったく異なる場合があります。iescripts.orgのチュートリアル (特にセクション 5 を参照)
には、IE へのユーザー スクリプトの移植に関するセクション全体があります。

そのチュートリアルを読み、記載されているガイドラインに従って、コードの移植を正直に試みてください。

于 2012-12-26T19:31:15.870 に答える