[JQUERY] 파이어 폭스 확장에 jQuery를 사용하는 방법
JQUERY파이어 폭스 확장에 jQuery를 사용하는 방법
해결법
-
1.나는 다음과 같은 example.xul을 사용합니다 :
나는 다음과 같은 example.xul을 사용합니다 :
<?xml version="1.0"?> <overlay id="example" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <head></head> <script type="application/x-javascript" src="jquery.js"></script> <script type="application/x-javascript" src="example.js"></script> </overlay>
그리고 여기에 example.js입니다
(function() { jQuery.noConflict(); $ = function(selector,context) { return new jQuery.fn.init(selector,context||example.doc); }; $.fn = $.prototype = jQuery.fn; example = new function(){}; example.log = function() { Firebug.Console.logFormatted(arguments,null,"log"); }; example.run = function(doc,aEvent) { // Check for website if (!doc.location.href.match(/^http:\/\/(.*\.)?stackoverflow\.com(\/.*)?$/i)) return; // Check if already loaded if (doc.getElementById("plugin-example")) return; // Setup this.win = aEvent.target.defaultView.wrappedJSObject; this.doc = doc; // Hello World this.main = main = $('<div id="plugin-example">').appendTo(doc.body).html('Example Loaded!'); main.css({ background:'#FFF',color:'#000',position:'absolute',top:0,left:0,padding:8 }); main.html(main.html() + ' - jQuery <b>' + $.fn.jquery + '</b>'); }; // Bind Plugin var delay = function(aEvent) { var doc = aEvent.originalTarget; setTimeout(function() { example.run(doc,aEvent); }, 1); }; var load = function() { gBrowser.addEventListener("DOMContentLoaded", delay, true); }; window.addEventListener("pageshow", load, false); })();
-
2.다음 솔루션은 가능한 컨텐츠 스크립트 파일에서 jQuery를 사용 할 수 있습니다 (1.5 타겟팅 애드온-SDK)
다음 솔루션은 가능한 컨텐츠 스크립트 파일에서 jQuery를 사용 할 수 있습니다 (1.5 타겟팅 애드온-SDK)
당신의 main.js에서 :
exports.main = function() { var pageMod = require("page-mod"); pageMod.PageMod({ include: "*", contentScriptWhen: 'end', contentScriptFile: [data.url("jquery-1.7.1-min.js") , data.url("notifier.js") , data.url("message.js")], onAttach: function onAttach(worker) { //show the message worker.postMessage("Hello World"); } }); };
당신의 message.js에서 :
self.on("message", function(message){ if(message !== "undefined"){ Notifier.info(message); } });
일부 함정 당신은 조심해야합니다
-
3.이 단계별 설명 모질라 포럼에서 우수한 기사가있다 : http://forums.mozillazine.org/viewtopic.php?f=19&t=2105087
이 단계별 설명 모질라 포럼에서 우수한 기사가있다 : http://forums.mozillazine.org/viewtopic.php?f=19&t=2105087
내가 여기에 정보를 복제 주저 있도록하지만 나는 아직 그것을 시도하지 않았습니다.
-
4.@sunsean하여 현재 상위 답변을 끈다는 여러 부하를 처리하기에 올 때 예상대로 작동하지 않습니다. 이 기능은 제대로 가까운 문서를 통해 글로벌 상태를 피해야한다.
@sunsean하여 현재 상위 답변을 끈다는 여러 부하를 처리하기에 올 때 예상대로 작동하지 않습니다. 이 기능은 제대로 가까운 문서를 통해 글로벌 상태를 피해야한다.
또한, 당신은 정말 다른 부가 기능과의 충돌을 피하기 위해 (사실) jQuery.noConflict 전화를해야!
이것은 내가 작성합니다 누구 (다시, 나는 ... 추가 기능) 전염병과 같은에서 (JQuery와 피할 것이다). 먼저 오버레이 XUL
<?xml version="1.0"?> <overlay id="test-addon-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script type="text/javascript" src="jquery.js"/> <script type="text/javascript" src="overlay.js"/> </overlay>
그리고 오버레이 스크립트 :
// Use strict mode in particular to avoid implicitly var declarations (function() { "use strict"; // Main runner function for each content window. // Similar to SDK page-mod, but without the security boundaries. function run(window, document) { // jquery setup. per https://stackoverflow.com/a/496970/484441 $ = function(selector,context) { return new jq.fn.init(selector,context || document); }; $.fn = $.prototype = jq.fn; if (document.getElementById("my-example-addon-container")) { return; } let main = $('<div id="my-example-addon-container">'); main.appendTo(document.body).text('Example Loaded!'); main.click(function() { //<--- added this function main.text(document.location.href); }); main.css({ background:'#FFF',color:'#000',position:'absolute',top:0,left:0,padding:8 }); }; const log = Components.utils.reportError.bind(Components.utils); // Do not conflict with other add-ons using jquery. const jq = jQuery.noConflict(true); gBrowser.addEventListener("DOMContentLoaded", function load(evt) { try { // Call run with this == window ;) let doc = evt.target.ownerDocument || evt.target; if (!doc.location.href.startsWith("http")) { // Do not even attempt to interact with non-http(s)? sites. return; } run.call(doc.defaultView, doc.defaultView, doc); } catch (ex) { log(ex); } }, true); })();
여기에 완벽한 추가 기능 요지 등이다. 그냥 JQuery와의 사본에 드롭하고 갈 수 있어야합니다.
-
5.나는이 에릭 말했지만, 직접 URL에서 자바 스크립트를로드 할 수있는 일이라고 생각합니다.
나는이 에릭 말했지만, 직접 URL에서 자바 스크립트를로드 할 수있는 일이라고 생각합니다.
javascript:var%20s=document.createElement('script');s.setAttribute('src','http://YOURJAVASCRIPTFILE.js');document.getElementsByTagName('body')[0].appendChild(s);void(s);
쉽게 페이지 요소를 조작 할 수 있도록 임 당신이 부하 JQuery와에 확장을 원하는 가정? http://parkerfox.co.uk/labs/pixelperfect : 우리 회사의 연구소를 직접 여기 사용하여 자바 스크립트를 않는 무언가가
-
6.그것은 나쁜 연습을 할 수있다, 그러나 당신은 인라인을 포함하여 고려 했는가?
그것은 나쁜 연습을 할 수있다, 그러나 당신은 인라인을 포함하여 고려 했는가?
-
7.대신에
대신에
$('img',content.document);
당신은 시도 할 수 있습니다
$('img',window.content.document);
내 경우에는 그것을 작동합니다.
from https://stackoverflow.com/questions/491490/how-to-use-jquery-in-firefox-extension by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 속성 '데이터 정렬'을 기반으로 jQuery를에 정렬 된 div? (0) | 2020.10.25 |
---|---|
[JQUERY] 자바 스크립트 / jQuery를 사용하여 프리로드 이미지에 결정적인 가장 좋은 방법은? (0) | 2020.10.25 |
[JQUERY] 키 값을 기준으로 배열의 자바 스크립트의 발견 및 제거 개체 (0) | 2020.10.25 |
[JQUERY] jQuery를에 CSV로 내보내기 (0) | 2020.10.25 |
[JQUERY] jQuery를 함께 요소를 가리키면 경우 감지 (0) | 2020.10.25 |