executioncript chrome扩展程序无法正常执行

时间:2017-10-04 16:49:35

标签: javascript angularjs google-chrome google-chrome-extension

我正在尝试将值添加到新选项卡上的元素中,然后单击“提交以登录”。 我尝试了很多变化,似乎无法让它发挥作用。

function injectScript(){
var script =  ' var e = document.getElementById("email"); var p = document.getElementById("password");'+
              'e.value ="'+currentEmployee.email+'"; p.value = "'+currentEmployee.password+'";'+
              'var osbut = document.getElementById("osLoginButton"); osbut.submit();';

chrome.tabs.create({ url: "https://www.example.com" });

  chrome.tabs.executeScript({
    code: script, runAt :"document_start" // i have tried document_idle and document_end too
  });
//https://developer.chrome.com/extensions/tabs#method-executeScript

}//end func

看看我要定位的按钮是什么样的

<button type="submit" id="osLoginButton" class="btn btn-block" 
ng-disabled="!user.email || !user.password || loggingIn" 
style="background:#6f5092; color:white; width:75%; 
display:block; margin-right:auto; margin-left:auto; margin-top:2rem;"><span>
&nbsp;&nbsp;</span><span class="glyphicon glyphicon-log-in pull-left"></span>Sign me in</button>

以下是我在控制台

中新选项卡上遇到的错误
Unchecked runtime.lastError while running tabs.executeScript: Cannot access a chrome:// URL
    at injectScript (chrome-extension://ihekknfdfleelcebfjflficdnebfadlc/popup.js:188:15)
    at empLogin (chrome-extension://ihekknfdfleelcebfjflficdnebfadlc/popup.js:177:1)
    at HTMLAnchorElement.<anonymous> (chrome-extension://ihekknfdfleelcebfjflficdnebfadlc/popup.js:160:42)

    error in extension

脚本是否可能定位到扩展程序?新标签页正在运行angular1。我不确定ng-disabled是否会影响它,因为角度改变需要时间,因此脚本失败。我也无法测试,因为扩展中没有setTimeouts。虽然 我确实尝试在执行的脚本中发送一个setTimeout(),没有任何效果。我很茫然。 不,我无法更改新标签页面上的按钮。谢谢你提前帮忙。

1 个答案:

答案 0 :(得分:1)

大多数chrome扩展API都是异步的,您需要等待标签创建的回调。

chrome.tabs.create({ url: 'https://www.example.com' }, function (tab) { chrome.tabs.executeScript(tab.id, { code: 'code to inject...' }); });

相关问题