我正在使用以下JavaScript打开一个新窗口,将其聚焦于该窗口,将其与窗口源居中对齐,然后编写一个包含HTML markdown的预设字符串。
if (prodidarray.length > 0 && upgradebox.checked == true) {
var dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left;
var dualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top;
width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;
var left = ((width / 2) - (300 / 2)) + dualScreenLeft;
var top = ((height / 2) - (200 / 2)) + dualScreenTop;
var alertWindow = window.open('','alertWindow', 'scrollbars=yes, width=300, height=200, top=' + top + ', left=' + left);
// Puts focus on the newWindow
if (window.focus) {
alertWindow.focus();
}
alertWindow.document.write(prodidalertstring);
alertWindow.document.close();
}
但是,当我这样做时,它确实会弹出窗口,将其聚焦并正确放置,但它不会写入字符串。 About / blank页面的HTML只是HTML和Body,没有其他内容。
也就是说,除非我将失败的空白窗口保持打开状态,然后在运行脚本时首先单击该窗口,然后单击它。在这种情况下,不会打开新窗口,并且字符串将成功写入已经打开的窗口。
作为参考, prodidalertstring 可以完美地输出到控制台,这是一个释义的版本,其中包含所有关键元素。
var prodidalertstring = "<p>An example popup filler" + "<br>" + withAString + "</p>";
对于上下文,此功能已在chrome浏览器扩展程序中使用,因此不需要跨平台。这个问题仅在最近才开始,并且在几个月前还可以正常使用,所以我觉得新的chrome更新可能是一个问题。我尝试了许多其他方式对此进行编码,包括DOM元素,但无济于事。