请在贬低之前阅读我的理性。
我正在建立一个小型网络教育项目,其中有一个艺术部分。单击按钮后,将显示包含带有艺术作品的图片的元素。之后,我想要另一个窗口打开另一个网站,其中包含有关特定艺术作品(维基百科,博物馆网站,虚拟画廊等)的更多或相关信息。 我知道我可以在另一个网站的链接上添加另一个按钮,以便用户在查看艺术作品后可以自己点击,但我真的希望实现这种动态感,同时也让用户关注相关内容。他们看过艺术品之后的网站。 这是我的代码:
jQuery('a.artpiece').click(function(){
$(".photoContainer").show();
setTimeout(function() {
window.open("http://www.anotherartwebsite.com");
}, 6000);
});
不幸的是弹出窗口阻止程序被触发,因为你知道浏览器不会将window.open
函数作为用户操作的直接结果,因为它会延迟几秒钟。
我在这里经历了一些帖子,其中使用Ajax来避免弹出窗口阻止程序,但是因为在这种情况下我不使用Ajax,所以我不确定它们是否能满足我的目的。
提前谢谢。
答案 0 :(得分:1)
不要打开新的window
,而是打开modal
。在modal
中,添加指向维基百科网址的iframe
。因此,您的模态将显示文章的内容。
当你已经使用jQuery
时,你会发现很多模态小部件。以下一个似乎很合适:http://www.nfl.com/liveupdate/gamecenter/57167/ATL_Gamebook.pdf
答案 1 :(得分:1)
我明白你的意图不是使用弹出窗口来表示邪恶,但是有足够多的人做使用它是邪恶的,甚至好人也会受到弹出窗口拦截器的影响。这就是为什么我们不能拥有美好的东西。
我在这里经历了一系列帖子,其中使用Ajax进行解决方法以避免弹出窗口阻止程序
我相信你指的是this answer?如果是这样,那对你的目的不起作用 - 在打开弹出窗口之前,提问者想要等待JSON调用的结果,因此解决方案是使该调用同步,以便它的返回结束被视为同一点击事件的一部分。
这并不适合你的情况,因为你想要的是一个相对较长的延迟 - 理论上你可以做一个无操作的同步ajax调用并让服务器故意延迟响应一段时间(并希望浏览器在此期间不会超时)...但同时用户的浏览器UI在等待该响应时将被完全锁定。这不好(并且是同步ajax被弃用的原因;我相信一些浏览器如果你尝试它就会抛出错误,而且它们迟早都会出错。)
这样就出来了。
因此,您的选择是
在这里,我将失去对待这个问题,好像它是一个ux.stackexchange问题,提前道歉:我会强烈敦促你考虑选项2而不是1。当网站因为没有明显原因而在我脸上抛出意想不到的内容时,我讨厌它,这正是用户体验的结果。 ("我正在看艺术!现在我的脸上有一篇维基百科文章!谁问过这个?")
您可以推迟显示该"点击此处获取更多信息"按钮几秒钟,让用户有机会首先欣赏艺术。但只是将这些信息放在他们身上,无论他们是否愿意,我都会考虑用户敌对行为(无论是在弹出窗口还是在主窗口内部。)