我正在尝试将值添加到新选项卡上的元素中,然后单击“提交以登录”。 我尝试了很多变化,似乎无法让它发挥作用。
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>
</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(),没有任何效果。我很茫然。 不,我无法更改新标签页面上的按钮。谢谢你提前帮忙。
答案 0 :(得分:1)
大多数chrome扩展API都是异步的,您需要等待标签创建的回调。
chrome.tabs.create({
url: 'https://www.example.com'
}, function (tab) {
chrome.tabs.executeScript(tab.id, {
code: 'code to inject...'
});
});