打开一个新标签然后写点东西

时间:2018-02-14 16:29:30

标签: javascript jquery

我有一些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);
       })

编辑:我还需要给它一个标题

2 个答案:

答案 0 :(得分:0)

您从document

错过了document.write()

var codeHtml = '<div class="code">foo<br /></div>';
var newWindow = window.open();
newWindow.document.write(codeHtml);

Working example

请注意,您无法切换到标签页。这是由浏览器控制的,低于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调用结果后更新打开的页面。