Dynamics CRM有自己的XRM JS API,我正在尝试在我正在开发的chrome扩展中执行这些API。我正在使用下面的代码。
chrome.tabs.query({ currentWindow: true, active: true }, function(tabs) {
chrome.scripting.executeScript({
target: { tabId: tabs[0].id },
func: () => {
Xrm.Utility.alertDialog("Hello world", () => { });
}
});
});Xrm.Utility.alertDialog("Hello world", () => { });此代码使用此Dynamics API方法在Dynamics CRM屏幕上显示一个消息框。
如果我在chrome控制台中运行这段代码,它会正确地显示消息。如果我只放入alert("Hello world")",代码也会运行,它确认executeScript工作正常,但不知何故Xrm不可用。
Manifest.json

发布于 2021-11-01 15:32:28
在堆栈溢出几次之后,我了解到脚本注入需要显式地创建一个脚本标记并将其注入到页面主体上。类似于下面的代码。
function runOnXrmPage() {
// create a script tag
var s = document.createElement('script');
s.src = chrome.runtime.getURL('webscript.js');
s.onload = function () {
this.remove();
};
(document.head || document.documentElement).appendChild(s);
}
chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
chrome.scripting.executeScript({
target: { tabId: tabs[0].id },
func: () => {
runOnXrmPage();
}
});
});所有的Xrm代码都放在webscript.js文件中,清单按照下面的粘贴进行了更新。
"web_accessible_resources": [
{
"resources": [ "webscript.js" ],
"matches": [ "https://*.crm.dynamics.com/*" ]
}
]https://stackoverflow.com/questions/69793028
复制相似问题