无法在新打开 window JS 上访问文档
Can't access document on new open window JS
我正在尝试从网页获取一些数据并将其传递给新 window 并从那里打印。这是我的代码:
var print_btn;
let win;
document.getElementsByTagName('html')[0].innerHTML = document.getElementsByTagName('html')[0].innerHTML +"<button class=\"printbuton\">Print Button</button>";
print_btn = document.getElementsByClassName('printbuton')[0];
print_btn.onclick = function() {
console.log("check 1");
var WinPrint = window.open('', '', 'left=0,top=0,width=384,height=900,toolbar=0,scrollbars=0,status=0');
console.log("check 2");
WinPrint.document.write('Print this');
console.log("check 3");
WinPrint.document.write('Print that');
WinPrint.document.write('and this');
console.log("button pushed");
}
当我尝试这个时,它会打开新的 window,但它仍然是空的,并且在控制台中它只记录“检查 1”和“检查 2”。
我测试过,如果我 console.log(WinPrint) 它会显示在控制台中,但如果我这样做 console.log(WinPrint.document) 它不会显示任何内容并且脚本会停在那里。
由于 (XSS [Cross Site Scripting]) 错误,您的代码将无法运行。 Firefox 正在阻止您更改其他域的内容。
由于您要打开一个新的 window,您现在拥有一个与开始时不同的域名 (about:blank)。
有几种方法可以解决这个问题,很快想到的是使用 window.create
API 并使用查询参数将数据传递给新的 window:
function onCreated(windowInfo) {
console.log('SUCCESS');
}
function onError(error) {
console.log(`Error: ${error}`);
}
print_btn.addEventListener('click', event => {
var popupURL = browser.extension.getURL("popup/popup.html?line=blahblah&line2=loremipsum");
var creating = browser.windows.create({
url: popupURL,
type: "popup",
height: 200,
width: 200
});
creating.then(onCreated, onError);
});
或者您可以通过使用 windows.create
打开,然后使用 runtime.sendmessage
将消息传递回后台脚本,然后传递到新的 window.
或者您可以将弹出窗口注入页面本身并执行类似的操作。
我正在尝试从网页获取一些数据并将其传递给新 window 并从那里打印。这是我的代码:
var print_btn;
let win;
document.getElementsByTagName('html')[0].innerHTML = document.getElementsByTagName('html')[0].innerHTML +"<button class=\"printbuton\">Print Button</button>";
print_btn = document.getElementsByClassName('printbuton')[0];
print_btn.onclick = function() {
console.log("check 1");
var WinPrint = window.open('', '', 'left=0,top=0,width=384,height=900,toolbar=0,scrollbars=0,status=0');
console.log("check 2");
WinPrint.document.write('Print this');
console.log("check 3");
WinPrint.document.write('Print that');
WinPrint.document.write('and this');
console.log("button pushed");
}
当我尝试这个时,它会打开新的 window,但它仍然是空的,并且在控制台中它只记录“检查 1”和“检查 2”。 我测试过,如果我 console.log(WinPrint) 它会显示在控制台中,但如果我这样做 console.log(WinPrint.document) 它不会显示任何内容并且脚本会停在那里。
由于 (XSS [Cross Site Scripting]) 错误,您的代码将无法运行。 Firefox 正在阻止您更改其他域的内容。
由于您要打开一个新的 window,您现在拥有一个与开始时不同的域名 (about:blank)。
有几种方法可以解决这个问题,很快想到的是使用 window.create
API 并使用查询参数将数据传递给新的 window:
function onCreated(windowInfo) {
console.log('SUCCESS');
}
function onError(error) {
console.log(`Error: ${error}`);
}
print_btn.addEventListener('click', event => {
var popupURL = browser.extension.getURL("popup/popup.html?line=blahblah&line2=loremipsum");
var creating = browser.windows.create({
url: popupURL,
type: "popup",
height: 200,
width: 200
});
creating.then(onCreated, onError);
});
或者您可以通过使用 windows.create
打开,然后使用 runtime.sendmessage
将消息传递回后台脚本,然后传递到新的 window.
或者您可以将弹出窗口注入页面本身并执行类似的操作。