绕过 javascript 中 window.open() 的弹出窗口阻止程序



我有一个文本文件,其中包含一些包含一些关键字的行。我的练习是从该文件中提取信息并创建一个 html 文档,在文本文件中插入带有适当标签的留置权。 例如: 这是文本文件:

This should be in a html tag with START as class name
THIS SHOULD BE IN A HTML TAG WITH CAPITALS AS CLASS NAME
This should be in a HTML tag with CODE as class name

现在编写一个javascript程序将这些行插入HTML是非常容易的。我只是使用了一些这样的字符串处理:

if(contents[i].indexOf(" CODE")!=-1){
w.document.write("<p class='code'>"+lines+"</p>");
}

我正在将所有这些写入一个新的窗口.open object。主要问题是弹出窗口阻止程序不允许此功能。那么,还有其他方法可以做到这一点吗?我无法物理生成 html 文件,我需要即时生成它,所以 window.open 是我能想到的唯一方法。我还有其他方法可以适应这一点吗? (我可以通过使用

w=window.open("somefile.html")
w.document.opne("somefile.html")

其中 somefile.html 是任何文件。但我不想这样做,这似乎不是一个干净的方式。

更重要的是,为了让我访问该文件,我必须将其托管在服务器上(我目前正在使用节点为此提供的http服务器)还有其他选择吗?

我不想使用Jquery,我希望用vanilla javascript完成所有这些工作。但是,如果有可能使用Jquery执行此操作,请告诉我。

非常感谢:)

原则上,弹出窗口被所有现代浏览器阻止。他们会问你是否要允许他们,但否则他们不会允许他们。

如果它必须是另一个文档,也许 iframe 可能有用?


这里有一堆额外的解决方案:

  • 有一个假的弹出窗口。只是一个div,其中包含漂浮在常规内容上方的所有数据。您可以为其添加一个"x"按钮以关闭它并实现一些拖放功能。视觉效果大致相同,但用户不能将其视为操作系统级别的窗口。
  • 尝试以某种方式将内容集成到常规页面中。要么是 iframe 内容,要么只是常规内容。现代设计已经过了需要在单个平面之外使用弹出窗口和其他内容的阶段。此外,在移动设备上,尚不清楚弹出窗口将如何工作。
  • 在新选项卡中打开内容。这基本上只是使用<a>标签。您可以将您希望拥有的内容放在链接的片段中,您打开的页面可以解码片段并显示您想要的信息。可能无法处理大量内容。
  • 有更好的流程来允许弹出窗口。通知用户您的网站需要弹出窗口并让他们禁用它。一个好方法是提供一些按钮来触发弹出窗口,该弹出窗口将被阻止。然后通知他们告诉浏览器允许弹出窗口,因为他们中的大多数人都会显示有关弹出窗口如何被阻止的内容。然后,您可以显示常规弹出窗口,而不会有用户错过数据的风险。

最新更新