2

我在处理Microsoft Dynamics CRM 2011的HTML-web资源中的JS应用程序中的window.onbeforeunload事件时遇到了问题。通过使用“正常” IE下面的代码工作正常:在CRM 2011 Outlook客户端中处理JS窗口onBeforeUnload事件

window.onbeforeunload = function (e) { 
    if (changedData) { 
     var message = 'leave...'; 
     if (typeof e == 'undefined') { 
      e = document.parentWindow.event; 
     } 
     if (e) { 
      e.returnValue = message; 
     } 
     return message; 
    } 
} 

但在CRM 2011 Outlook客户端中,我没有收到留言。关闭窗口时,你有什么想法留下留言吗?

回答

1

Outlook与IE中的CRM“对象堆栈”可能会有所不同(因为如果没有别的,Outlook容器窗口将被包含在IE IFrame中),因此当您使用“未记录”事件时(在CRM SDK中感觉),那么你将容易受到这样的“惊喜”;)

你期望与你的代码发生什么?您只在事件上设置了returnValue - 这不会导致任何用户反馈。

您是否确认过您的代码是否正在运行(即插入alert();)?

+0

onbeforeunload事件是不受支持的吗?我没有在SDK中找到它。有没有onbeforeunload事件的等价物? 代码显示,如果事件发生,则显示带有消息的窗口。就像在CRM实体窗体中进行任何更改并关闭窗口而不保存一样。 - >像这样:[link](http://stackoverflow.com/questions/6218468/javascript-onbeforeunload-function) 该代码在Outlook客户端之外工作。我用alert()测试它,并在IE浏览器中工作正常,所有警报都会显示出来,但在Outlook客户端代码不是调用。 – user1829815

+0

对不起,我应该澄清一下 - 当我说“不被支持”时,我的意思是说,当在CRM环境中进行脚本编写时,微软只保证有些事情能够正常工作,并且会继续工作。 CRM SDK中不存在“onbeforeunload”这一事实意味着它不被CRM“支持”。感谢你澄清你的代码应该通过链接做什么(我从中学到了一些东西)。虽然我怀疑你是[this]的受害者(http://stackoverflow.com/questions/1728495/window-onbeforeunload-not-firing-in-child-window?rq=1)... –

+0

... ,也许你可以尝试在你的函数的第一行放入一个'debugger;'语句并检查运行时发生了什么?另一个想法 - 这是一个自定义实体还是你在Outlook中使用CRM表单? (我知道这是一个基本问题,但只是检查)。例如,如果您使用的是Outlook表单的电子邮件或任务,则此代码将不会加载到那里。 –

相关问题