NS_ERROR_XPC_BAD_CONVERT_JS с document.write
Я загружаю сторонний файл JavaScript, который использует 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;
С этим я получаю NS_ERROR_XPC_BAD_CONVERT_JS везде, где я пытаюсь позвонить dwrite
, Может кто-нибудь предложить предложение о том, почему это происходит? Я не понимаю, почему вызов 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>");