जब उपयोगकर्ता मेरे क्रोम एक्सटेंशन के पॉपअप.एचटीएमएल में एक बटन पर क्लिक करता है, तो यह फॉर्म.एचटीएमएल खोलता है जिसमें टेक्स्ट क्षेत्र होता है जहां उपयोगकर्ता टेक्स्ट इनपुट कर सकता है। उपयोगकर्ता टेक्स्टरेरा में टेक्स्ट इनपुट करने के बाद, मैं पृष्ठभूमि.जेएस इनपुट टेक्स्ट तक पहुंचने के लिए चाहता हूं। जब उपयोगकर्ता टैब स्विच करता है, तो मैं textarea में जो कुछ भी है उसे पकड़ने के लिए background.js चाहता हूं, भले ही form.html सक्रिय टैब न हो।

मैंने दस्तावेज़ पास कर दिया है। .

पॉपअप.एचटीएमएल

<!DOCTYPE html>
<html style=''>
<head>
<head><title>activity</title></head>  
</head>
<body style="width:600px;">
<div id="myText"></div><p>
<button type="button" class="button" id="btn1">Input info</button>
<script src="popup.js"></script>
</body>

</html>

पॉपअप.जेएस


function onWindowLoad(callback) {
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
    var url = tabs[0].url;
    document.getElementById("myText").innerHTML = url;
});

}
var button = document.getElementById("btn1");
button.addEventListener("click", function(){
    chrome.tabs.create({url:"/form.html"});
});

window.onload = onWindowLoad();

फॉर्म.एचटीएमएल

<style>
            html, body {
                }
            #myForm {
                width: 100%;
                height: 100%;
                margin: auto;
                  position: relative;
                padding: 0;            }
        </style>
<body>
<div class="form-popup" id="myForm">
  <form id="s3paths" class="form-container">
    <h2>Enter info here</h2><p>
    <textarea rows="5" cols="80" id="textarea" placeholder = "example of what to input">
</textarea></p>
<button type="button" class="button" id="btn2">Load</button>
<script src="form.js"></script>
  </form>
</div>
</body>

फॉर्म.जेएस

var button = document.getElementById("btn2");
button.addEventListener("click", function(){
    alert('loaded!');
    var port = chrome.runtime.connect({name: "paths"});
    var spaths = document.getElementById("textarea").value;
    port.postMessage({paths: spaths});
});

पृष्ठभूमि.जेएस

chrome.runtime.onConnect.addListener(function(port) {
  port.onMessage.addListener(function(msg) {
    alert(msg.paths);
  });
});

मैं कैसे प्राप्त कर सकता हूं background.js तक पहुँचने के लिए document.getElementById("textarea").form.html का मान किसी भी टैब से उपयोगकर्ता जिस पर स्विच करता है?

2
musician1023 4 अगस्त 2019, 09:34

1 उत्तर

सबसे बढ़िया उत्तर

अद्यतन: मुझे एक कामकाज मिला। जब मैं textarea में मान को form.js से background.js तक एक संदेश के रूप में पास करता हूं, तो मैं इसे स्टोर करने के लिए chrome.storage.sync का उपयोग करता हूं, इसलिए जब मैं किसी भिन्न टैब पर जाता हूं, तो यह अभी भी संग्रहीत होता है। (मैंने बटन क्लिक रखा)।

फॉर्म.जेएस

var button = document.getElementById("btn2");
button.addEventListener("click", function(){
    alert('loaded!');
    var port = chrome.runtime.connect({name: "paths"});
    var spaths = document.getElementById("textarea").value;
    port.postMessage({paths: spaths});
});

पृष्ठभूमि.जेएस

chrome.runtime.onConnect.addListener(function(port) {
  port.onMessage.addListener(function(msg) {
    var paths = msg.paths;
    chrome.storage.sync.set({key: paths}, function() {
    //alert('Value is set to ' + paths);
        });
  });
});

जब मैं संग्रहीत मूल्य का उपयोग करना चाहता हूं तो background.js में कहीं और:

chrome.storage.sync.get(['key'], function(result) {
        if (!result.key){alert('Value is empty')}
        else {alert(result.key);
        //did stuff with result.key
        };
        })
1
musician1023 7 अगस्त 2019, 17:24