दिलचस्प पोस्ट
PHP में क्लाइंट आईपी पता कैसे प्राप्त करें? प्रोजेक्ट संकलित नहीं कर सकता जब मैं लंबकीय जे आईडीईए के तहत लंबोक का उपयोग कर रहा हूं Excel CSV – संख्या सेल प्रारूप document.createElement ("स्क्रिप्ट") synchronously वास्तविक समय डेटा की साजिश रचने (qwt) ऑस्सिलोस्कोप जावा के लिए मूल कीवर्ड क्या है? क्वेरी स्ट्रिंग में एक चर वैल्यू बदलें मैं एक मूल्य और एक ही संरचना में उस मान के संदर्भ क्यों नहीं रख सकता? एंड्रॉइड: कैसे ScrollView के अंदर एक दृश्य दिखाई दे रहा है? एसएलआर क्वेरी में OR या नहीं का उपयोग करना एक प्रकार के ऑब्जेक्ट serializing करते समय एक परिपत्र संदर्भ का पता चला था 'सबसोनिक.Schema .DatabaseColumn' NHibernate AliasToBean ट्रांसफॉर्मर एसोसिएशन वेबड्राइवर – जावा का उपयोग करके तत्व की प्रतीक्षा करें एंड्रॉइड डिवाइस कंपन कैसे करें? एक स्ट्रिंग में एक विशिष्ट सूचकांक में एक चरित्र को बदलें?

अनचेक किए गए रनटाइम.लिस्ट ऐबूट करते हुए टैब। ExecuteScript चला रहे हैं?

मैंने रिपल एमुलेटर ओपन सोर्स ( https://github.com/apache/incubator-ripple ) बनाने में कामयाब रहा

मैंने इसे प्रति निर्देशों (जेक बिल्ड) का निर्माण किया है, जो कि क्रोम एक्सटेंशन लक्ष्य बनाता है जो मुझे https://github.com/apache/incubator-ripple/blob के अनुसार, मेरे निर्मित के क्रोम एक्सटेंशन के माध्यम से अपने वेब एप्लिकेशन का परीक्षण करने की अनुमति देता है /master/doc/chrome_extension.md

मैंने सफलतापूर्वक क्रोम पर अनपैक विस्तारित लोड किया है, लेकिन जब मैं इसे सक्षम करता हूं, तब कुछ भी नहीं होता, हालांकि पृष्ठ पुनः लोड करता है, एक्सटेंशन काम नहीं करता है, इसके बजाय मुझे 2 त्रुटियां मिलती हैं:

  1. अनक्यूट रेफरेंसएयर: वेबकीट नोटिफिकेशन परिभाषित नहीं है

    webkitNotifications.createHTMLNotification('/views/update.html').show(); 
  2. अनचेक किए गए रनटाइम.लिस्ट टैब चालू करते समय त्रुटि। ExecuteScript: कोई क्रोम: // यूआरएल एक्सेस नहीं कर सकता

     chrome.tabs.executeScript(tabId, { 

मैं इस समस्या का समाधान कैसे कर सकता हूं।


पूर्ण पृष्ठभूमि। Js:

 if (!window.tinyHippos) { window.tinyHippos = {}; } tinyHippos.Background = (function () { var _wasJustInstalled = false, _self; function isLocalRequest(uri) { return !!uri.match(/^https?:\/\/(127\.0\.0\.1|localhost)|^file:\/\//); } function initialize() { // check version info for showing welcome/update views var version = window.localStorage["ripple-version"], xhr = new window.XMLHttpRequest(), userAgent, requestUri = chrome.extension.getURL("manifest.json"); _self.bindContextMenu(); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { var manifest = JSON.parse(xhr.responseText), currentVersion = manifest.version; if (!version) { _wasJustInstalled = true; } if (version !== currentVersion) { webkitNotifications.createHTMLNotification('/views/update.html').show(); } window.localStorage["ripple-version"] = currentVersion; } }; xhr.open("GET", requestUri, true); xhr.send(); chrome.extension.onRequest.addListener(function (request, sender, sendResponse) { switch (request.action) { case "isEnabled": console.log("isEnabled? ==> " + request.tabURL); sendResponse({"enabled": tinyHippos.Background.isEnabled(request.tabURL)}); break; case "enable": console.log("enabling ==> " + request.tabURL); tinyHippos.Background.enable(); sendResponse(); break; case "version": sendResponse({"version": version}); break; case "xhr": var xhr = new XMLHttpRequest(), postData = new FormData(), data = JSON.parse(request.data); console.log("xhr ==> " + data.url); $.ajax({ type: data.method, url: data.url, async: true, data: data.data, success: function (data, status) { sendResponse({ code: 200, data: data }); }, error: function (xhr, status, errorMessage) { sendResponse({ code: xhr.status, data: status }); } }); break; case "userAgent": case "lag": case "network": // methods to be implemented at a later date break; default: throw {name: "MethodNotImplemented", message: "Requested action is not supported!"}; break; }; }); chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) { if (tinyHippos.Background.isEnabled(tab.url)) { chrome.tabs.executeScript(tabId, { code: "rippleExtensionId = '" + chrome.extension.getURL('') + "';", allFrames: false }, function () { chrome.tabs.executeScript(tabId, { file: "bootstrap.js", allFrames: false }); }); } }); } function _getEnabledURIs() { var parsed = localStorage["tinyhippos-enabled-uri"]; return parsed ? JSON.parse(parsed) : {}; } function _persistEnabled(url) { var jsonObject = _getEnabledURIs(); jsonObject[url.replace(/.[^\/]*$/, "")] = "widget"; localStorage["tinyhippos-enabled-uri"] = JSON.stringify(jsonObject); } _self = { metaData: function () { return { justInstalled: _wasJustInstalled, version: window.localStorage["ripple-version"] }; }, bindContextMenu: function () { var id = chrome.contextMenus.create({ "type": "normal", "title": "Emulator" }); // TODO: hack for now (since opened tab is assumed to be page context was called from // eventually will be able to pass in data.pageUrl to enable/disable when persistence refactor is done chrome.contextMenus.create({ "type": "normal", "title": "Enable", "contexts": ["page"], "parentId": id, "onclick": function (data) { _self.enable(); } }); chrome.contextMenus.create({ "type": "normal", "title": "Disable", "contexts": ["page"], "parentId": id, "onclick": function (data) { _self.disable(); } }); }, enable: function () { chrome.tabs.getSelected(null, function (tab) { console.log("enable ==> " + tab.url); _persistEnabled(tab.url); chrome.tabs.sendRequest(tab.id, {"action": "enable", "mode": "widget", "tabURL": tab.url }); }); }, disable: function () { chrome.tabs.getSelected(null, function (tab) { console.log("disable ==> " + tab.url); var jsonObject = _getEnabledURIs(), url = tab.url; while (url && url.length > 0) { url = url.replace(/.[^\/]*$/, ""); if (jsonObject[url]) { delete jsonObject[url]; break; } } localStorage["tinyhippos-enabled-uri"] = JSON.stringify(jsonObject); chrome.tabs.sendRequest(tab.id, {"action": "disable", "tabURL": tab.url }); }); }, isEnabled: function (url, enabledURIs) { if (url.match(/enableripple=/i)) { _persistEnabled(url); return true; } // HACK: I'm sure there's a WAY better way to do this regex if ((url.match(/^file:\/\/\//) && url.match(/\/+$/)) || url.match(/(.*?)\. (jpg|jpeg|png|gif|css|js)$/)) { return false; } enabledURIs = enabledURIs || _getEnabledURIs(); if (url.length === 0) { return false; } else if (enabledURIs[url]) { return true; } return tinyHippos.Background.isEnabled(url.replace(/.[^\/]*$/, ""), enabledURIs); } }; initialize(); return _self; }()); 

पूर्ण प्रकट। जेसन:

 { "version": "1", "manifest_version": 2, "name": "Ripple Emulator (Beta)", "background": { "page": "views/background.html" }, "web_accessible_resources": [], "icons":{ "16":"images/Icon_16x16.png", "128":"images/Icon_128x128.png", "48":"images/Icon_48x48.png" }, "browser_action":{ "default_popup":"views/popup.html", "default_icon":"images/Icon_48x48.png", "default_title":"Ripple" }, "content_scripts":[{ "run_at": "document_start", "js": ["controllers/Insertion.js"], "matches": ["http://*/*","https://*/*","file://*"] }, { "run_at": "document_start", "js": ["controllers/frame.js"], "matches": ["http://*/*","https://*/*","file://*"], "all_frames": true }], "permissions": ["tabs", "unlimitedStorage", "notifications", "contextMenus", "webRequest", "<all_urls>"], "description": "A browser based html5 mobile application development and testing tool" } 

वेब के समाधान से एकत्रित समाधान "अनचेक किए गए रनटाइम.लिस्ट ऐबूट करते हुए टैब। ExecuteScript चला रहे हैं?"

इन दोनों त्रुटियों की समस्या अच्छी तरह से समझाती है:

"वेबकिट सूचनाएं परिभाषित नहीं हैं" – यह इसलिए है क्योंकि वेबकिट नोटिफिकेशन को हटा दिया गया है। मुझे क्रोम वेबकिट नोटिफिकेशन नहीं मिला: एपीआई लापता है जो बताता है कि क्या हो रहा है।

"क्रोम: // यूआरएल तक नहीं पहुंच सकता है" – आपको स्क्रिप्ट को क्रोम पर चलाना चाहिए: // यूआरएल (जैसे क्रोम: // सेटिंग्स, क्रोम: // एक्सटेंशन) जो कि अवैध है इस तरह त्रुटि छपाई से बचने के लिए, आप या तो – क्रोम की जांच कर सकते हैं। रेंटाइम.लास्ट त्रुटि – सुनिश्चित करें कि क्रोम पर इंजेक्ट न करें: // पेज।

"चेक" runtime.lastError कॉलबैक में इसे "रीडिंग" द्वारा दर्ज करें।


कोड

 chrome.tabs.executeScript(tabId, { //.. }, _=>chrome.runtime.lastError /* "check" error */) 

उदाहरण के लिए

इसके माध्यम से दिखाएं ..

 chrome.tabs.executeScript(tabId, { //.. }, _=>{ let e = chrome.runtime.lastError; if(e !== undefined){ console.log(tabId, _, e); } });