Safari 扩展 - 为什么我不能调用页面的函数?它从控制台工作



我有一个Safari扩展名,该扩展名在页面的左上方添加了一个按钮。我要做的就是调用JavaScript函数,该功能在我按下该按钮时在原始页面中定义。

当我尝试一下时,我只是回来"找不到变量:重新组织"

但是,如果我从控制台中调用reolanizedata((,它可以很好地工作。

我100%确定该页面已满负载。iv'e甚至尝试在上面放10秒延迟。

您的扩展名的注入脚本被Safari隐含地命名,以保护其免受文档的命名空间(和vice-vices-vice-vice-vice-vice-vice-vice-vice-vice-vice-vice-vices(。这就是为什么注入的脚本无法调用文档中声明的函数。

为了解决这个问题,您的注入脚本可以将<script>标签插入文档。您可以为您的按钮添加插入的脚本添加一个click事件处理程序,该操作程序将调用所需的函数。

示例:

var myScript = document.createElement('script');
myScript.textContent = `
    document.getElementById('my-button')
      .addEventListener('click', functionIWantToCall);
`;
document.body.appendChild(myScript);

相关内容

  • 没有找到相关文章

最新更新