2011-06-07 9 views
0

私はdocument.writeを利用するサードパーティ製のJavaScriptファイルを取得していますが、書かれているものは操作する必要があります。私はdwriteを呼び出そうとするところはどこでも私はNS_ERROR_XPC_BAD_CONVERT_JSを取得しています、これによりNS_ERROR_XPC_BAD_CONVERT_JS with document.write

// Hijack document.write to buffer all output... 
var dwrite = document.write; 
var hijacked = ''; 
document.write = function(content) { 
    hijacked += content; 
}; 
// Call the script... 
dwrite("<script type='text/javascript' src='http://www.example.com/file.js'></script>"); 
// Manipulate the output... 
hijacked 
    .replace(/a/gi, '4') 
    .replace(/e/gi, '3') 
    .replace(/i/gi, '1') 
    .replace(/o/gi, '0'); 
// Write the output into the page... 
dwrite(hijacked); 
// Restore document.write and free our buffer... 
document.write = dwrite; 
hijacked = null; 

:私は何を作ってみたことは次のとおりです。誰がなぜこれが起こっているのかについての提案を提供できますか? document.writeを別の名前で呼び出すのがなぜ爆発するのかわかりません。

更新日 Firefox 4.0.1でこれが表示されています。


答えて

1

これを試してみました。基本的に私はの後にdocument.writeを置き換えました。

document.write("" 
    + "<script>" 
    + "var hijacked = '';" 
    + "var dw = document.write;" 
    + "document.write = function(content) { hijacked += content; }" 
    + "<" + "/script>" 

    + "<script type='text/javascript' src='test.js'><" + "/script>" 

    + "<script>" 
    + "document.write = dw;" 
    + "dw = null;" 
    + "document.write(hijacked.replace(/e/gi, '4'));" 
    + "<" + "/script>"); 
+0

どのブラウザでは(複数可)あなたはテストしたのですか?私のポストで言及しているはずです。 –

+0

Firefox 3.6 –

+0

私はこの方法で試しました。後処理ロジックを.jsファイルの呼び出し後に独自のスクリプトタグに移動すると、やっているようでした。良い呼び出し - 外部の.jsが完全に処理される前に変換コードが実行されていたと思います。 –