JavaScript中如何更改confirm()的默认标题?

87

在JavaScript中,是否可以修改confirm()函数打开的消息框的标题?

我可以创建一个模态弹出框,但我想尽可能地简化它。我想做类似于这样的事情:

confirm("This is the content of the message box", "Modified title");

在Internet Explorer中,默认的标题是“Windows Internet Explorer”,在Firefox中是“[JavaScript-program]”,不是很具有信息性。尽管我可以从浏览器安全的角度理解,你不应该能够这样做。

8个回答

92

从安全角度来看,你所说的是不可能的。唯一的模拟方式是创建一个无模式对话框窗口。

有许多第三方JavaScript插件可用于模拟此效果,这样您就不必编写所有代码。


3
Bootstrap.CSS有一些漂亮的模态框。 - 0xcaff

11

你可以做到!!这是一个有点棘手的方法;)(它在 iOS 上几乎有效)

var iframe = document.createElement("IFRAME");
iframe.setAttribute("src", 'data:text/plain,');
document.documentElement.appendChild(iframe);
if(window.frames[0].window.confirm("Are you sure?")){
    // what to do if answer "YES"
}else{
    // what to do if answer "NO"
}

享受它!


1
最初这会导致一个错误。然后,在将if块放入超时后,它在Firefox中产生了相同的结果。但在Chrome中不起作用。http://jsfiddle.net/pzd9pmeu/ - Oliver Moran
2
这将把标题更改为“此网页上的嵌入页面说:”。 - ZioCain
5
哎呀,那是个恶心的黑客技巧。我不是说这有什么问题。但那必须与迄今为止我看过的一些最恶劣的黑客攻击方法齐名。你知道,赞扬那种可以做到的精神! - cmc

5

不可能。但是您可以使用第三方JavaScript库来模拟弹出窗口,这样看起来可能更好,并且不会那么烦人。


3
您可以始终使用一个隐藏的div,并使用JavaScript来“弹出”该div并拥有像是和否的按钮。这很容易做到。

0

是的,这是不可能修改它的标题。如果您仍然想要自己的标题,可以尝试使用其他弹出窗口。


0
很遗憾,你不能这样做。唯一的方法是使用window.open调用来模拟。

0
不要使用 confirm() 对话框……可以很容易地从 prototype/scriptaculous、YUI、jQuery 等自定义对话框中选择一个,这些都有很多可供选择的。

0

我知道对于alert()来说这是不可能的,所以我猜对于confirm也是不可能的。原因是安全性:不允许您更改它,以便您不会将自己呈现为某个系统进程或其他东西。


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