我有一些html代码,我想写一个空白页面。我尝试了这种方法,但Chrome阻止了我的弹出式尝试。
如何将代码写入新标签?并自动更改为该标签?
success: (function (code) {
var codeHtml = '<div class="code">' + code.replace(/(?:\r\n|\r|\n)/g, '<br />') + '</div>';
var newWindow = window.open();
newWindow.write(codeHtml);
})
编辑:我还需要给它一个标题
答案 0 :(得分:0)
您从document
document.write()
var codeHtml = '<div class="code">foo<br /></div>';
var newWindow = window.open();
newWindow.document.write(codeHtml);
请注意,您无法切换到标签页。这是由浏览器控制的,低于JS可以访问的级别。
答案 1 :(得分:0)
看起来您的代码在ajax请求完成后尝试打开弹出窗口。不幸的是,这是让大多数弹出窗口阻止程序阻止弹出窗口的好方法。
您可以做的最好的事情是确保从用户交互事件中同步打开新窗口。例如浏览器会(通常)让你打开一个弹出窗口,如果你直接回复说click
事件。
<script>
function handleClick() {
var newWin = window.open("https://google.com");
}
function handleClickDelayed() {
// The `setTimeout` here "breaks" the connection between the click event and `window.open`, so most browsers will block the popup.
setTimeout(handleClick, 1000);
}
</script>
<button onclick="handleClick()">Click me</button>
<button onclick="handleClickDelayed()">Click me delayed (will likely be blocked)</button>
Ajax请求的结果与上面示例中的setTimeout
类似,它们会中断用户点击事件和window.open
调用之间的连接,因此会被阻止。 A&#34;技巧&#34;您可以尝试在用户单击时打开窗口,然后在获得AJAX调用结果后更新打开的页面。