Chrome扩展无法调用网页__doPostBack()函数问题求助
解决Chrome扩展中调用页面__doPostBack函数报错的问题
问题原因
Chrome扩展的内容脚本运行在与页面独立的隔离执行上下文中,无法直接访问页面全局作用域里的变量或函数(比如ASP.NET生成的__doPostBack)。而DevTools控制台直接在页面的执行上下文中运行,所以能正常调用该函数。
解决方案
通过动态向页面DOM注入脚本的方式,让代码在页面的执行上下文中运行,从而调用__doPostBack。修改你的test.js代码如下:
function clickLink() { // 创建script元素并写入要执行的代码 const injectScript = document.createElement('script'); injectScript.textContent = `__doPostBack('ctl00$Main$AssetSearchPanel$DialogContainers$GridContainers$ctl02$BtnName','')`; // 插入到页面head中执行 document.head.appendChild(injectScript); // 执行完成后移除脚本(可选,清理DOM) injectScript.remove(); } clickLink();
说明
这种方式不违反Chrome扩展的内容安全策略(CSP),因为脚本是注入到目标页面的上下文中执行,而非在扩展自身的页面中运行内联脚本。你的manifest.json配置无需修改,保持现有设置即可。
内容的提问来源于stack exchange,提问作者Felipe Obregón
相关产品推荐
相关产品推荐

