2
열린 모든 Firefox 창에 숨겨진 iframe이 하나 필요합니다.JavaScript XPCOM 구성 요소에서 숨겨진 iframe/브라우저를 만드는 방법은 무엇입니까?
지금은 XUL 오버레이 내에 iframe을 만들므로 각 브라우저 창마다 만들어집니다.
모든 브라우저 창에 단일 iframe 인스턴스가 있어야 XPCOM 구성 요소를 사용해야한다고 생각하지만 XUL 요소를 만드는 방법을 찾을 수 없습니다.
가능합니까? JavaScript code modules 같은 - 당신이 필요로하는 모든이 더 좋은 방법이 있습니다 글로벌 코드를 실행 할 수있는 장소입니다 경우, 그러나
var hiddenWindow = Components.classes["@mozilla.org/appshell/appShellService;1"]
.getService(Components.interfaces.nsIAppShellService)
.hiddenDOMWindow;
var frame = hiddenWindow.document.getElementById("myExtensionFrame");
if (!frame)
{
var XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
frame = hiddenWindow.document.createElementNS(XUL_NS, "iframe");
frame.setAttribute("id", "myExtensionFrame");
frame.setAttribute("src", "...");
hiddenWindow.document.documentElement.appendChild(frame);
}
:
좋은 솔루션, 고마워,하지만 다른 사람이 내 숨겨진 창의 location.href 변경할 수 있으며 내 코드가 중단됩니다 것 같습니다. – KAdot
@KAdot : 이론적으로 - 예. 실제적으로 그렇게하는 것은 꽤 파괴적 일 것이고 확장은 그렇게하지 않을 것입니다. –
Firefox의 각 애드온은 핵심 브라우저 기능을 수정할 수있을뿐 아니라 다른 (경쟁 업체) 애드온을 방해 할 수있는 것처럼 필요한만큼 더 많은 제어 기능을 갖추고 있습니다 ... 그러나 이것이 가능하기 때문에 사람들이 이런 종류의 이상한 일을한다는 것을 의미하지는 않습니다 것들 ... 그래서, 당신은 안전하게 Addon이 숨겨진 윈도우 href를 변경하지 않는다고 가정 할 수 있습니다. –