J'essaie d'obtenir les valeurs dans les éléments du nouvel onglet, puis cliquez sur soumettre pour me connecter. J'ai essayé de nombreuses variantes et je n'arrive pas à le faire fonctionner.L'exécution de l'extension chrome ne s'exécute pas correctement
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
Heres ce que le bouton ressemble à ce que je vise à soumettre
<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>
Voici l'erreur que je reçois sur le nouvel onglet dans la console
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
Est-il possible de la script cible l'extension? La nouvelle page de l'onglet est en cours d'exécution angular1. Je ne suis pas sûr que ce ng-disabled l'affecte car il faut du temps pour que l'angulaire change et le script échoue à cause de cela. Je ne peux pas non plus tester cela car il n'y a pas setTimeouts dans les extensions. Bien que j'ai essayé d'envoyer un setTimeout() dans le script exécuté, rien n'a fonctionné. Je n'arrive pas. Et non, je ne peux pas changer le bouton sur la page du nouvel onglet. Merci pour votre aide à l'avance.
L'API est asynchrone de sorte que vous devez ExecuteScript dans le rappel de tabs.create à l'aide du paramètre 'tab' passé à ce rappel, et spécifiez' tab.id' dans le premier paramètre de ExecuteScript. Voir la documentation – wOxxOm
Je pensais que le tab.id était optionnel et il était par défaut à l'onglet actuel qui serait le nouvel onglet. Je vais essayer d'ajouter le script d'injection comme rappel et voir si cela fonctionne. Merci, je vais essayer – Hunter
"Current" signifie au moment où le code s'exécute, et executeScript s'exécute * avant * que l'onglet ne soit réellement créé car l'API est asynchrone. – wOxxOm