Lancer un événement de clic dans une extension twitter chrome

J’essaie d’initier un événement clic sur la page Web .com de Twitter. Mais de toute façon, cela ne fonctionne pas lorsque j’essaie le code dans mon extension.

if(typeof TIP == 'undefined'){ var TIP = {}; } TIP.Tweets = { getNumberOfTweets: function(){ var tweets = $('#stream-items-id .js-stream-item').length; return tweets; }, setNumberOfTweets: function(number){ TIP.Tweets.currentNumberOfTweets = number; } } TIP.initiate = function(){ TIP.Tweets.currentNumberOfTweet = TIP.Tweets.getNumberOfTweets(); setInterval(function(){ var tweets = TIP.Tweets.getNumberOfTweets(); if(TIP.Tweets.currentNumberOfTweets != tweets){ TIP.Tweets.setNumberOfTweets(tweets); TIP.renderImages(); } }, 100); //Render images TIP.renderImages(); } TIP.renderImages = function(){ $('#stream-items-id .js-view-details').each(function(){ var btn = this if($.sortingm($(this).text()) == 'View photo'){ $(btn).click();//This is the button I want to click, which is the view photo button console.log('rendered'); } }); } $(function(){ TIP.initiate(); }); 

Mais, lorsque j’essaie d’insérer le code manuellement, cela fonctionne. J’insère le code suivant ci-dessous dans la console de Google Chrome:

 $('#stream-items-id .js-view-details').each(function(){ var btn = this if($.sortingm($(this).text()) == 'View photo'){ $(btn).click(); console.log('rendered'); } }); 

Si j’essaie de faire autre chose au lieu d’initier un événement click. Ça fonctionne bien. Par exemple, si je veux manipuler le code HTML interne du bouton. Cela fonctionne très bien dans le code d’extension. Le problème ne se produit que lorsque j’essaie d’initier un clic dans l’extension.

Fichier manifest.json demandé:

 { "name": "Twitter Image Previewer", "version": "1.0", "description": "Enables image previews in tweets", "browser_action": { "default_icon": "icon.png" }, "content_scripts": [ { "matches": ["http://twitter.com/*", "https://twitter.com/*"], "css": ["style.css"], "js": ["jquery.min.js", "JeasyCreate.js", "extension.js"], "all_frames": true } ], "permissions": [ "http://*/", "https://*/" ] } 

Je ne connais rien à JQuery mais j’ai pensé que je devrais préciser que cela fonctionne comme une façon plus pure de JS ….

 // https://developer.mozilla.org/en/DOM/element.dispatchEvent function simulateClick(obj) { var evt = document.createEvent("MouseEvents"); evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); var canceled = !obj.dispatchEvent(evt); /* if(canceled) { // A handler called preventDefault alert("canceled"); } else { // None of the handlers called preventDefault alert("not canceled"); } */ } var photos = document.querySelectorAll('#stream-items-id .js-view-details'); for (var i = 0; i < photos.length; i++) { if (photos[i].firstChild.data.trim()=='View photo') simulateClick(photos[i]); }