首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chrome扩展ExecuteScript未触发XRM JavaScript

Chrome扩展ExecuteScript未触发XRM JavaScript
EN

Stack Overflow用户
提问于 2021-11-01 05:43:10
回答 1查看 58关注 0票数 2

Dynamics CRM有自己的XRM JS API,我正在尝试在我正在开发的chrome扩展中执行这些API。我正在使用下面的代码。

代码语言:javascript
复制
chrome.tabs.query({ currentWindow: true, active: true }, function(tabs) {
  chrome.scripting.executeScript({
    target: { tabId: tabs[0].id },
    func: () => {
      Xrm.Utility.alertDialog("Hello world", () => { });
    }
  });
});
代码语言:javascript
复制
Xrm.Utility.alertDialog("Hello world", () => { });

此代码使用此Dynamics API方法在Dynamics CRM屏幕上显示一个消息框。

如果我在chrome控制台中运行这段代码,它会正确地显示消息。如果我只放入alert("Hello world")",代码也会运行,它确认executeScript工作正常,但不知何故Xrm不可用。

Manifest.json

EN

回答 1

Stack Overflow用户

发布于 2021-11-01 15:32:28

在堆栈溢出几次之后,我了解到脚本注入需要显式地创建一个脚本标记并将其注入到页面主体上。类似于下面的代码。

代码语言:javascript
复制
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文件中,清单按照下面的粘贴进行了更新。

代码语言:javascript
复制
  "web_accessible_resources": [
    {
      "resources": [ "webscript.js" ],
      "matches": [ "https://*.crm.dynamics.com/*" ]
    }
  ]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69793028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档