Firefox中window.open('about:text/html')脚本访问被拒绝的解决方法
解决Firefox中window.open操作about页面的权限问题
这段代码在Chrome里能正常运行,但Firefox会抛出Error: Access to 'about:text/html' from script denied错误,原因是Firefox对about:协议下的页面有更严格的同源策略限制,不允许脚本直接修改这类页面的文档内容。
解决方法
直接用空字符串或者about:blank作为window.open的目标地址,Firefox允许脚本操作自己创建的空白页面文档:
var tab = window.open('', '_blank') // 也可以用 window.open('about:blank', '_blank') tab.document.write( '<a download="mytext.txt" href="data:text/plain;charset=utf-8,' + encodeURIComponent(res.data) + '">Download</a><pre>' + res.data + '</pre>' ) tab.document.close()
关于tab.document.close()的疑问
这个方法是需要调用的:用document.write写入内容后,浏览器会维持文档的打开状态,等待后续可能的写入操作。调用close()会告知浏览器文档已加载完成,这样页面能正常渲染,还能避免不必要的内存占用。
内容的提问来源于stack exchange,提问作者DevonDahon
相关产品推荐
相关产品推荐

