我正在嘗試創建一個監視網頁中一些JavaScript API的使用情況的工具。我的計劃是重寫JavaScript API,將調用信息存儲到全局變量中,然後通過postMessage將其發送到內容腳本。但是,向網頁中注入類似下面的代碼會導致「Aw Snap」錯誤。使用注入調用chrome.devtools.inspectedWindow.reload會導致Aw Snap
chrome.devtools.panels.create("Test Dev Panel",
"icon.png",
"panel.html",
function (panel) {
var code = [
"window.counter = 0;",
"Array.prototype.push = function() {",
"window.counter++;",
"}",
"window.addEventListener('message', function(event) {",
"window.postMessage('Array.push() has been called ' + window.counter + ' times.', '*');",
"}, false);"
];
chrome.devtools.inspectedWindow.reload({
injectedScript: code.join('')
});
...
});
這可能是一個安全限制。但是有什麼方法可以實現我的目標嗎?
---更新--- 如果我刪除postMessage()調用,則不會發生此錯誤。 此外,它不會刪除Array.prototype覆蓋代碼。 在我看來,調用postMessage()並同時覆蓋Array的原型導致錯誤。
這是不相關的,但你需要一個;在window.addEventListener行之前。 「};」而不是「}」 – Jono 2014-03-16 15:43:37
啊!這只是一個語法錯誤... – kuu 2014-03-17 16:02:50
無論如何,謝謝你指出了喬諾! – kuu 2014-03-17 16:09:13