打开一个新标签/窗口,写的东西呢?(Open a new tab/window and write

2019-06-17 18:21发布

我使用的是执行JS编写和Firefox内测试JavaScript代码。 我想打开一个新的标签/窗口,写的东西给它,我尝试

var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
var win = wm.getMostRecentWindow("navigator:browser");
printWindow = win.open("about:blank");
printWindow = wm.getMostRecentWindow("navigator:browser");
printWindow.gBrowser.selectedBrowser.contentDocument.write('hello');

myWindow=window.open('','','width=200,height=100')
myWindow.document.write("<p>This is 'myWindow'</p>")
myWindow.focus()

不过,我总是得到这个错误

[异常...“的操作是不安全的。” 代码: “18” nsresult: “0x80530012(的SecurityError)”

有没有办法通过这个例外获得?

Answer 1:

编辑 :截至2018年,该解决方案将不再有效 。 所以,你又回到了开about:blank在一个新的窗口,并添加内容到它。

不要“写”到窗口,只是你需要的内容,打开它:

var data = "<p>This is 'myWindow'</p>";
myWindow = window.open("data:text/html," + encodeURIComponent(data),
                       "_blank", "width=200,height=100");
myWindow.focus();

供参考: 数据URI



Answer 2:

顶级的导航数据的网址已被阻止在Chrome,火狐(有一些例外),IE和边缘(以及可能的其他浏览器启动)。 他们显然通常用于网络钓鱼攻击,以及各大浏览器厂商决定的危险抵销通过合法使用的情况下所提供的价值。

这Mozilla的安全博客中解释说,Firefox会阻止

  • 网页导航到使用新的顶级数据URL文件:
    • window.open("data:…");
    • window.location = "data:…"
    • 点击<a href="data:…"> (包括Ctrl +单击'打开链接-IN-*'等)。
  • 网页重定向到使用新的顶级数据URL文件:
    • 302重定向到"data:…"
    • 元刷新"data:…"
  • 外部应用程序(例如,雷鸟)在浏览器中打开一个URL数据

但不会阻止

  • 用户明确输入/粘贴"data:…"到地址栏
  • 打开所有的纯文本数据文件
  • 打开"data:image/*"的顶层窗口,除非它是"data:image/svg+xml"
  • 打开"data:application/pdf""data:application/json"
  • 下载数据:URL,如“保存链接,如”的"data:…"

您还可以阅读弃用并删除顶部框架导航到Chrome浏览器数据的URL的建议 ,并查看目前的Chrome状态指示它已被删除 。

至于如何真正在新标签或窗口中打开HTML,这应该是足够了:

var tab = window.open('about:blank', '_blank');
tab.document.write(html); // where 'html' is a variable containing your HTML
tab.document.close(); // to finish loading the page

需要注意的是,至少在Chrome中, 通过文件撰写注入外部脚本可能无法在速度较慢的连接下载 。 这也许不是与此有关的事,但要注意。



Answer 3:

var winPrint = window.open('', '', 'left=0,top=0,width=800,height=600,toolbar=0,scrollbars=0,status=0');
winPrint.document.write('<title>Print  Report</title><br /><br /> 
Hellow World');
winPrint.document.close();

window.open(URI)不工作铬作为2018



文章来源: Open a new tab/window and write something to it?