2017-06-09 69 views
0

我有一个文本文件,其中有一些行包含一些关键字。我的练习是从该文件中提取信息,并创建一个HTML文档,在文本文件中插入留置并带有适当的标签。 例如: 这是文本文件:跳过JavaScript中window.open()的弹出窗口拦截器

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>"); 

         } 

我将所有这些写入一个新的window.open对象。主要问题是弹出窗口阻止程序不允许使用此功能。那么,有没有其他办法可以做到这一点?我无法物理生成html文件,我需要随时生成它,所以window.open是我能想到的唯一方法。有没有其他的方法可以实现这个目标? (我可以只使用

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

其中somefile.html任何文件绕过弹出窗口拦截器。但我并不想这样做,这似乎不是一个干净的方式。)

更多了,对于我来说,访问该文件,我必须将其托管在服务器上(目前我正在使用节点为此提供的http-server)是否有其他替代方法?

我不想使用jquery,我希望用vanilla javascript来完成所有这些。但是如果有可能使用Jquery做这件事,请告诉我。

非常感谢你:)

回答

1

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

如果它是另一个文件,也许一个iframe可能是有用的?


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

  • 有一个假弹出。所有数据都浮于常规内容之上。你可以添加一个'x'按钮来关闭它并实现一些拖放功能。视觉效果非常相似,但用户不能将其视为OS级窗口。
  • 尝试以某种方式将内容集成到常规页面。无论是iframe还是只是普通的内容。现代设计已经超越了在单机之外需要弹出窗口和其他内容的阶段。此外,在手机上,弹出窗口的工作原理还不清楚。
  • 在新选项卡中打开内容。这基本上只是使用<a>标签。您可以将您希望的内容放入链接的片段中,并且打开的页面可以对片段进行解码并显示所需的信息。可能无法使用巨大的内容。
  • 有更好的流程允许弹出窗口。通知用户您的网站需要弹出窗口并使其停用。一种好的方法是提供一些触发弹出窗口的按钮,这将被阻止。然后通知他们告诉浏览器允许弹出窗口,因为他们中的大多数都会显示弹出窗口被阻止的情况。然后,您可以显示常规弹出窗口,避免用户遗漏数据。
+0

在另一个窗口打开iframe并在那里写入也会计为弹出窗口阻止程序? 我没有在页面中放置Iframe的地方,所以我需要在新窗口中打开它。 – Vamshi

+0

另外,我需要一个大的iframe的另一个原因是因为文本文件的大小可能会非常大。我无法在我的主页中容纳一个大的Iframe。 – Vamshi

+0

现实没有。任何可能会导致用户恼怒的事情都会被浏览器阻止:弹出窗口,发生的警报消息太多等等。我添加了一堆额外的解决方案。 –

相关问题