主要编辑 1下面是我最初的问题的描述,但我发现 Chrome 和 Firefox 都正确加载了库。即使反复刷新,IE 9/10 也根本无法工作。但是,一旦我打开开发者控制台并重新加载,一切正常。
我已阅读有关该问题的这篇文章并按照概述的步骤进行操作。问题是 jQuery 在 IE 9/10、Chrome 或 Firefox 中无法可靠/一致地加载。
我也无法以 100% 的可靠性重复这个问题。但是,通常发生的情况是,在我在自定义 Web 资源中发布更改并重新加载表单后,我会在开发人员控制台中看到“jQuery 未定义”。随后的重新加载将不会显示错误,并且如果我在重新加载之前清除缓存,则行为似乎没有差异。
以下是我的实现的一些细节:
- 我正在使用依赖于 jQuery 的 CrmFetchKit 库。
- 为了完成这项工作,我将这两个库合并为一个 Web 资源。这背后的想法是错误总是来自 CrmFetchKit,它告诉我该文件在正确包含方面没有问题。
- 我的代码如下。
- 我的函数“genericFetch()”在 onChange 事件处理程序中设置,用于我的实验表单上的查找属性。
- 当 jQuery 可用时,一切都按预期工作(即使 js 超级难看)。
如果需要,我很乐意提供更多信息和/或屏幕截图。
// Fetch XML generic fetch format
function genericFetch(entity, targetField, returnFields, searchSource)
{
returnFields = returnFields.split('|');
var searchValue = Xrm.Page.getAttribute(searchSource).getValue();
if(searchValue)
{
searchValue = searchValue[0]['values'][1]['value'];
}
else
{
return false;
}
function onFetchError(xhr, status, errorThrown)
{
var errormsg = $(xhr.responseXML).find('Message').text();
alert('CrmFetchKit-Error occured: ' + errormsg);
}
var fetchXml = ['<fetch version="1.0" output-format="xml-platform" mapping="logical">'];
fetchXml.push('<entity name="' + entity + '">');
var len = returnFields.length;
for(i=0; i<len; i++)
{
fetchXml.push('<attribute name="' + returnFields[i] + '" />');
}
fetchXml.push('<filter type="and">');
fetchXml.push('<condition attribute="' + returnFields[0] + '" operator="eq" value="' + searchValue + '" />');
fetchXml.push('</filter>');
fetchXml.push('</entity>');
fetchXml.push('</fetch>');
fetchXml = fetchXml.join('');
CrmFetchKit.Fetch(fetchXml).then(function (results) {
/* success handler */
console.log("results: " + JSON.stringify(results, null, 4));
Xrm.Page.getAttribute(targetField).setValue(results[0]['attributes']['productnumber']['value']);
}, onFetchError);
}