5

से चर वैरिएबल मैं क्रोम के लिए एक बहुत ही सरल विस्तार करने की कोशिश कर रहा हूं लेकिन मैं पॉपअप एचटीएमएल से एक चर पारित करने पर अटक गया हूं।क्रोम एक्सटेंशन: पॉपअप एचटीएमएल

इस कोड है मैं अब तक है:


मैनिफ़ेस्ट:

{ 
    "background": { 
     "scripts": [ "background.js" ] 
    }, 
    "browser_action": { 
     "default_icon": "img/test.png", 
     "default_popup": "popup.html", 
     "default_title": "Auto Clicker" 
    }, 
    "description": "Auto click", 

    "manifest_version": 2, 
    "name": "Auto Clicker", 
    "permissions": [ "activeTab" ], 
    "version": "0.0.1" 
} 

background.js

chrome.extension.onMessage.addListener(
    function(request, sender, sendResponse) { 
     switch (request.directive) { 

      case "popup-click-1": 
      // execute the content script 
      chrome.tabs.executeScript(null, { // defaults to the current tab 

       file: "myscript.js", // script to inject into page and run in sandbox 
       allFrames: true // This injects script into iframes in the page and doesn't work before 4.0.266.0. 
      }); 
      sendResponse({}); // sending back empty response to sender 
      break; 

     } 
    } 
); 

myscript.js

function foo(){ 
    document.getElementById('submit-button').click(); 
} 

setInterval(function(){ 
    foo()}, 20000) 

foo(); 

popup.js

function clickHandler(e) { 
     chrome.extension.sendMessage({directive: "popup-click-1"}, function(response) { 
      this.close(); // close the popup when the background finishes processing request 
     }); 
    } 


document.addEventListener('DOMContentLoaded', function() { 
     document.getElementById('submit').addEventListener('click', clickHandler); 

    }) 

popup.html

<html> 
<head> 
<title>test</title> 
<script src="popup.js"></script> 
</head> 
<body> 
test 

<form> 
<input id="1" type = "text"> 
</br> 
</form> 
<button id='submit'> etst </button> 
</body> 
</html> 

अब तक मैं foo चलाने() जब आप क्लिक सबमिट करें लेकिन टन, जो हर 20sec चलाता है। जो मैं प्राप्त करना चाहता हूं वह पॉपअप एचटीएमएल पर एक संख्या जोड़ता है और उसके बाद setInterval फ़ंक्शन का समय सेट करने के लिए myscript.js पर उस नंबर का उपयोग करें।

तो यहाँ एक स्थिति है:

मैं पृष्ठ को खोलने, मैं विस्तार बटन हिट। एक फॉर्म के साथ एक पॉपअप है। मैंने 30000 डाल दिया और फिर सुमित मारा। इस तरह, foo() हर 30sec चलाएगा।

+0

1. यह स्पष्ट नहीं है कि समस्या क्या है। 2. मुझे इस मामले में पृष्ठभूमि स्क्रिप्ट की आवश्यकता नहीं दिखाई दे रही है (वास्तव में मुझे संदेह है कि आपकी योजना बिल्कुल काम करती है) – wOxxOm

+0

@wOxxOm 1) मैं वैरिएबल प्राप्त करना चाहता हूं कि उपयोगकर्ता पॉपअप.html फॉर्म में प्रवेश करता है और नंबर को प्रतिस्थापित करता है 20000 उस नंबर के साथ, myscript.js 2) कोड पूरी तरह से काम करता है, मैंने इसे कई बार कोशिश की। जब आप popup.html पर सबमिट बटन दबाते हैं, तो # सबमिट-बटन प्रत्येक 20sec पर क्लिक हो जाता है। –

उत्तर

3

पृष्ठभूमि स्क्रिप्ट की कोई आवश्यकता नहीं है।

popup.js में स्क्रिप्ट सम्मिलित करें और मान पास:

function clickHandler(e) { 
    chrome.tabs.executeScript({ 
     code: "var timeout=" + document.getElementById('1').value, 
     allFrames: true 
    }, function(result) { 
     chrome.tabs.executeScript({file: "myscript.js", allFrames: true}, function(result) { 
     }); 
    }); 
} 

myscript.js इंजेक्शन timeout चर का उपयोग करेगा:

............. 
setInterval(foo, timeout); 
............. 
+0

ठीक है, मैंने अब तक कई बार कोशिश की है, और जब आपका कोड कोड के रूप में निम्न का उपयोग करता है तो आपका कोड perfeclty काम करता है: कोड: "var timeout = 1;" तो मैं myscript.js पर जाता हूं और एक चेतावनी (टाइमआउट) का उपयोग करता हूं और मान प्राप्त करता हूं [1]। समस्या यह है कि जब मैं दस्तावेज़ का उपयोग करता हूं तो यह काम नहीं करता है .getElementById .... कोई विचार? पीएस: हालांकि मैं अभी भी खोज और परीक्षण कर रहा हूं, अगर मैं अधिक जानकारी प्राप्त करता हूं तो मैं अपडेट करूंगा संपादित करें: आप सबसे अच्छे हैं। आपका कोड 100% काम करता है। यह पता चला है कि इनपुट (पॉपअप पर।एचटीएमएल) कोई आईडी नहीं था। –

+0

चर और अभिव्यक्ति के वास्तविक मानों की जांच के लिए [डीबगर] (https://developer.chrome.com/extensions/tut_debugging) का उपयोग करें – wOxxOm

संबंधित मुद्दे