Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以从IE获取用户响应;本地的;onbeforeunload事件处理程序触发的对话框_Javascript_Jquery_Html_Internet Explorer - Fatal编程技术网

Javascript 是否可以从IE获取用户响应;本地的;onbeforeunload事件处理程序触发的对话框

Javascript 是否可以从IE获取用户响应;本地的;onbeforeunload事件处理程序触发的对话框,javascript,jquery,html,internet-explorer,Javascript,Jquery,Html,Internet Explorer,我有一个场景,需要捕获IE从onbeforeunload事件处理程序调用的对话框中收到的响应。这个对话框很熟悉 “确实要离开此页吗?您将丢失对此文档的所有未保存的修改。按“确定”继续,或按“取消”停留在当前页。” 为了避免任何人误解这个问题,我要强调的是,我感兴趣捕获的对话框是浏览器的对话框窗口,而不是使用第三方库(如JavaScript、Telerik等)作为源创建的对话框窗口 我真的不太关心点击OK按钮(虽然这是一个加号),而是更关心点击Cancel按钮,因为它需要的不仅仅是将用户保留在当前

我有一个场景,需要捕获IE从onbeforeunload事件处理程序调用的对话框中收到的响应。这个对话框很熟悉

“确实要离开此页吗?您将丢失对此文档的所有未保存的修改。按“确定”继续,或按“取消”停留在当前页。”

为了避免任何人误解这个问题,我要强调的是,我感兴趣捕获的对话框是浏览器的对话框窗口,而不是使用第三方库(如JavaScript、Telerik等)作为源创建的对话框窗口

我真的不太关心点击OK按钮(虽然这是一个加号),而是更关心点击Cancel按钮,因为它需要的不仅仅是将用户保留在当前页面上,我们公司希望在点击Cancel按钮时实现一些附加逻辑

我相信我已经努力搜索了所有可用资源,包括堆栈溢出,但我找不到任何关于如何获取对话框句柄和确定用户单击哪个按钮的具体答案或信息

由于我们公司此应用程序的主要浏览器是IE,因此问题仅限于IE。是否可以这样做?如果可以,我可以在哪里找到适当的文档或获得线索?鉴于迄今为止我还没有找到任何明确的答案,我认为这是不可能的,但希望其他人对此做出回应

编辑: 此问题特定于获取用户输入(使用IE的本机对话框或浏览器的本机提示)。例如,同样,不是(您)作为开发人员开发的对话框或提示


注意:-->使用第三方库进行开发有一个非常显著的区别,即作为开发人员,您已经拥有了对对象的引用,因为您创建了该对象。然而,对于由浏览器创建的对话框,您没有一个明显的句柄。

您实际上无法获得单击的结果,但是如果用户选择留在页面上,您可以在
onbeforeuload
事件中使用
setTimeout
来运行一些代码

例如:

var afterStayFunction = function() {
    $("body").append("Thanks for staying.");
};

$(window).on("beforeunload", function(e) {
    var prompt = "Are you sure you want to leave?";
    e.returnValue = prompt;
    setTimeout(function() { afterStayFunction(); });
    return e.returnValue;
});

实例

当然可以,您使用的是哪种对话框?这可以通过简单的window.confirm if语句完成。你试过什么?你很容易做到。。var res=确认(“您真的想这样做吗?”);如果(res==true){//user clicks Ok}其他{//user clicks Cancel}Ok,让我再次强调这个问题,因为有人显然认为这个问题在发布之前没有相关的研究,但是谁做出了这个决定,并且在这个问题上快速给出了a-1;他们可能也应该彻底地“阅读”这个问题,然后才会感到兴奋。是的,我知道获取用户输入的两种技术(使用您自己创建的对话框)。问题特定于由浏览器而不是开发人员生成的对话框。@Mark您现在应该在问题中写下这一点。请编辑它,我不认为你可以从浏览器的原生promptI中获得价值。我不明白为什么这个人@FedericHamidi将此标记为重复。。。看看评论就知道了。他在要求别的……谢谢!对我来说,一个明确的答案是“不,你不能得到点击的结果”和一个替代解决方案是一个可行的解决方案。我可以用setTimeout建议和所需的逻辑来设计一些公司应该可以接受的解决方案。我感谢你的反馈。