我一直在空閒時間創建一個基於Firefox WebExtensions的插件,它基本上讀取頁面,打開本地HTML,在HTML頁面上提交表單以導航到新網址,但我遇到問題chrome.extension.getViews()
一旦我打開的頁面更改網址。使用getViews進行跨源問題()
如果我再利用我getViews()
收到以下錯誤:
Not allowed to define cross-origin object as property on [Object] or [Array] XrayWrapper
我跟蹤下來,發現它曾經發生在我的本地HTML導航離開。我應該如何與我打開的網頁進行交互以解決此問題?
下面是一個小的休閒與我一起超時砍死(不是我的實際項目,只是爲了說明問題):
background.js
var views;
function openMyPage() {
console.log("injecting");
chrome.tabs.create({
url: chrome.extension.getURL("content_scripts/my-page.html"),
active: false
}, function(tab) {
chrome.windows.create({
tabId: tab.id,
type: "normal",
state: "maximized"
}, function(window) {
setTimeout(function(){
views = chrome.extension.getViews();
for(var i = 0; i < views.length; i++)
console.log("window location: " + views[i].location + " view id: " + i);
views[1].example();
setTimeout(function(){
for(var i = 0; i < views.length; i++)
console.log("window location: "+views[i].location+" view id: " + i);
}, 5000);
}, 2000);
});
});
}
chrome.browserAction.onClicked.addListener(openMyPage);
我-page.html中
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="my-page.js"></script>
</head>
<body>
<h1>It's my page!</h1>
</body>
</html>
我-page.js
console.log("loaded in my-page");
function example() {
document.location.href = "https://www.google.com/";
}
我想我明白它失敗,但是否有意義'extension.getViews()的原因'便具有完全斷裂的擴展頁面導航離開?我發現我無法使用我的本地HTML頁面的內容腳本,所以我選擇了這個。我可能會重做一些東西,將表單注入當前網頁並從那裏開始。 – Fiji