我有一个Safari扩展程序,可以在页面的左上角添加一个按钮。而我想要它做的就是调用我按下那个按钮时在原始页面中定义的javascript函数。
当我尝试这个时,我只是回过头来#34;找不到变量:reorganizeData"
但是,如果我从控制台调用reorganizeData(),它就能完美运行。
我100%确定页面已满载。我甚至尝试过10秒的延迟。
答案 0 :(得分:1)
您的扩展程序的注入脚本由Safari隐式命名,以保护它免受文档命名空间的影响(反之亦然)。这就是注入的脚本无法调用文档中声明的函数的原因。
要解决此问题,您注入的脚本可以在文档中插入<script>
标记。您可以让插入的脚本为您的按钮添加click
事件处理程序,这将调用所需的函数。
示例:
var myScript = document.createElement('script');
myScript.textContent = `
document.getElementById('my-button')
.addEventListener('click', functionIWantToCall);
`;
document.body.appendChild(myScript);