【问题标题】:Refreshing CRM Page Causes jQuery/Javascript Error刷新 CRM 页面导致 jQuery/Javascript 错误
【发布时间】:2010-07-21 15:30:26
【问题描述】:

女士们,先生们,

我有一个 CRM 页面,它引用了 3 个 js 文件,(1x jQuery,2x 自定义)都存储在 CRMInstall/isv/ 文件夹中。

在表单的 OnLoad 方法中,我正在加载每一个,然后使用它来扩展/自定义 UI。

我对 jQuery 的缺乏经验显然表现出来了!

OnLoad 代码如下:

//jquery
var url = "/isv/jquery-1.4.2.js";
var scriptElement = document.createElement("<script src='" + url + "' language='javascript'>");
document.getElementsByTagName("head")[0].insertAdjacentElement("beforeEnd", scriptElement);


$(document).ready(function() 
{ 
 $.getScript("/isv/common.js", function() 
 {
  $.getScript("/isv/account.js", function() 
  {
   $(document).ready(function() 
   { 
    SetUpAccountForm();//call to account.js
   });
  });
 });
});

这会导致以下情况(使用 IE8):
第一页加载(临时 Internet 文件夹中没有文件)

  • 点击 $(document).ready(function(){}) 时出错

第二个页面加载(所有文件现在都在 Internet 临时文件夹中)

  • 页面/加载功能正常

按 F5(刷新)

  • 点击 $(document).ready(function(){}) 时出错

我哪里错了?是不是因为我两次添加了对 jQuery 脚本的引用?

在这两种情况下,错误都是:

此字段的自定义事件出错。
字段:窗口
事件:onload
错误:预期对象

【问题讨论】:

    标签: jquery refresh dynamics-crm crm


    【解决方案1】:

    我认为问题在于,当你第一次点击 $(document).ready 函数时,Jquery 还没有完全加载......插入脚本标签并不意味着脚本立即准备好使用...

    第二次加载时,js文件已经在缓存中,所以加载速度会快很多,但是当你按下F5时,它会从服务器重新加载所有内容,你又回到了第一种情况。

    您可以通过将函数附加到您要插入的脚本节点的 onload 事件来解决此问题:

    var url = "http://code.jquery.com/jquery-1.4.2.min.js";
    
    var head = document.getElementsByTagName("head")[0];         
    var scriptNode = document.createElement('script');
    scriptNode.type = 'text/javascript';
    scriptNode.src = url;
    scriptNode.onload = jQueryLoaded;
    head.appendChild(scriptNode);
    
    
    function jQueryLoaded()
    {
        $(document).ready(function() {
            $("#some").text("Jquery loaded!!")
        });
    }
    

    【讨论】:

    • 我明天回到办公室时会试试这个,但这听起来很正确,也感谢示例代码!
    【解决方案2】:

    将 jquery 添加为 web 资源,将您的代码(另一个 web 资源)包装在本机 javascript 函数中,并为调用该函数的 Form OnLoad 添加一个事件。不要忘记将 jquerywebresource 放在自定义代码之前。见例子here

    【讨论】:

      猜你喜欢
      • 2018-11-27
      • 1970-01-01
      • 2019-01-10
      • 1970-01-01
      • 1970-01-01
      • 2016-04-30
      • 2020-07-21
      • 2018-07-17
      • 1970-01-01
      相关资源
      最近更新 更多