我有一个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);