如何创建一个弹出窗口(良好类型)

3
我需要制作一个弹出窗口,以便用户可以从其他网站登录我的网站。我需要使用弹出窗口来展示地址栏,让用户知道这是一个安全的登录而不是假冒的页面。例如,如果我使用漂浮的iframe,其他网站可能会伪装我的登录窗口并记录用户的登录信息。
感谢您!
额外的细节:我的弹出窗口将来自于任何域内的iframe中的JavaScript代码。我知道这听起来像我在创建广告,但实际上不是这样。如果有区别的话,iframe域和弹出窗口域是相同的。
还有一个细节,我想做和“Facebook Connect”一样的事情……如果你没有在Facebook上登录,他们会通过在该域名网站上显示弹出窗口,允许你登录到Facebook。例如,转到techcrunch.com上的任何文章并使用Facebook Connect进行评论。 确保您退出Facebook,您就会明白我在说什么了。

+1 因为你的情况确实需要弹出窗口。 - Camilo Martin
5个回答

4
请看这个网站
以下是从该网站复制的一些代码:
<script language="javascript" type="text/javascript">
<!--
function popitup(url) {
    newwindow=window.open(url,'name','height=200,width=150');  
    if(!newindow){
        alert('We have detected that you are using popup blocking software...');}
    if (window.focus) {newwindow.focus()}
    return false;
}

// -->
</script>

并且您可以通过以下方式链接到它:

<a href="popupex.html" onclick="return popitup('popupex.html')">Link to popup</a> 

看起来这个可以解决问题。不知道这是否会被阻止?或者因为iframe域名和弹出窗口的域名相同,所以我没问题吗? - Sam
我在查看示例时注意到的一个可能的问题是它在新标签页中打开,而不是在新窗口中打开,因为我已将Firefox设置为强制新窗口以新标签页形式打开。然而,Firefox的弹出窗口拦截器对此没有做任何事情。唯一确定的方法是进行测试。 - Sean
我在FF2中勾选了相同的选项,它确实弹出了窗口。你能否通过单击“connect”按钮在此处测试弹出窗口:http://www.somethingtoputhere.com/therunaround/(Facebook Connect演示站点)? - Sam
@Sam 它可以在新标签页中正常弹出,但随后它会缩小我的浏览器。我猜想你可能尝试着将窗口缩小以适应屏幕大小,但由于它是在新标签页中打开的,所以导致整个浏览器被缩小了。 - Sean

1

Sean的例子很好,但你仍然可以通过以下方式检测弹出窗口是否被阻止:

<script language="javascript" type="text/javascript">
<!--
function popitup(url) {
newwindow=window.open(url,'name','height=200,width=150');
if(!newwindow){
 alert('We have detected that you are using popup blocking software...');}

if (window.focus) {newwindow.focus()}
return false;
}

// -->
</script>

谢谢您的建议。我已经编辑了我的示例以包含它。 - Sean

0

这是如何创建一个弹出窗口的方法...

<!DOCTYPE html>
<html>
<body>

<button onclick="openWin()">Open "myWindow"</button>
<button onclick="closeWin()">Close "myWindow"</button>

<script>
var myWindow;

function openWin() {
    myWindow = window.open("", "myWindow", "width=200,height=100");
    myWindow.document.write("<p>This is 'myWindow'</p>");
}

function closeWin() {
    myWindow.close();
}
</script>

</body>
</html>

0

如果弹出窗口是由用户明确操作,如单击链接或按钮,则弹出窗口拦截程序不会生效。即使您的浏览器配置为阻止弹出窗口,Facebook连接窗口仍然会呈现。这是因为用户单击了连接按钮。即使当前站点的域名与弹出窗口中的站点不同,也没有关系。


-1

如果您的用户正在使用IE,并且您的网站在受信任的站点中,弹出窗口拦截程序将被停用。

这有帮助吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接