我创建了一个简单的JavaScript函数,以便在加载后显示我的弹出窗口。但它一直被Firefox和谷歌Chrome阻止,我必须以某种方式在Firefox和Chrome上启用它以显示弹出窗口。
有没有其他选择?
我在弹出窗口中有一个播放器,所以我必须使用弹出窗口让播放器自动播放。问题是,如果我把它放在页面本身上,一旦用户点击另一个页面,整个页面就会重新加载,播放器会自动停止几秒钟,直到整个页面重新加载,我必须防止这种情况发生。
答案 0 :(得分:1)
一般规则是,如果从未通过直接用户操作调用的javascript调用
window.open
或类似内容,弹出窗口阻止程序将会参与。也就是说,您可以调用window.open
以响应按钮单击而不会被弹出窗口阻止程序命中,但如果您在计时器事件中放入相同的代码,它将被阻止。呼叫链的深度也是一个因素 - 一些较旧的浏览器只查看直接呼叫者,较新的浏览器可以稍微回溯一下,看看呼叫者的呼叫者是否是鼠标点击等。尽可能保持浅,以避免弹出窗口阻止程序。
请在此处查看dthorpe的答案。它涵盖了你的问题。
答案 1 :(得分:0)
您可以尝试将播放器放在原始页面上,并使用类似History.js的内容来控制页面更改(您可以将主页面主体放在一个更改的包装器div中,并将播放器置于其外部)
否则,您可以尝试(假设您的意思是HTML5 <video>
或<audio>
播放器)将数据下载到localStorage / cookie / [其他持久性存储机制],并在每次更改页面时进行搜索
很难阻止浏览器阻止弹出窗口,因为任何这样做的方法本身就是可利用的;但是,如果您调用该函数从onclick
事件打开另一个窗口,您可以绕过一些弹出窗口阻止程序。此外,一些弹出窗口阻止程序允许在使用https
协议时弹出窗口,虽然没有多少具有此功能,如果您没有物理访问服务器,则https可能很难为普通网站实现。
另一个选项是在另一个标签页中打开其他页面(例如this w3c示例;您可以点击“使用javascript链接”。
您可能还想查看this帖子,因为它有些相似。
答案 2 :(得分:0)