- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在运行 Firefox 30。我打开了一些选项卡。其中一个是我的 local-html 文件,我在其中尝试将 window.id 或 document.id 设置为“myhtmlpage”。
...
function init() {
document.name = 'myhtmlpage';
document.id = 'myhtmlpage';
// or window.name ='myhtmlpage';
// window.id = 'myhtmlpage';
}
</script></head>
<body onload="init();">
...
使用以下代码(来自某些 mozilla 帮助页面)我可以找到 contentDocument,但它根本没有 .id 或 .name 属性或属性。
function findTabPerURL(url) {
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
var browserEnumerator = wm.getEnumerator("navigator:browser");
// Check each browser instance for our URL
var found = false;
while (!found && browserEnumerator.hasMoreElements()) {
var browserWin = browserEnumerator.getNext();
var tabbrowser = browserWin.gBrowser;
// Check each tab of this browser instance
var numTabs = tabbrowser.browsers.length;
for (var index = 0; index < numTabs; index++) {
var currentBrowser = tabbrowser.getBrowserAtIndex(index);
if (url == currentBrowser.currentURI.spec) {
// The URL is already opened. Select this tab.
tabbrowser.selectedTab = tabbrowser.tabContainer.childNodes[index];
// Focus *this* browser-window
browserWin.focus();
found = true;
return tabbrowser;
break;
}
}
}
}
var tab; tab = findTabPerURL("file:///F:/myfile.html");
var cd = tab.contentDocument;
alert(cd.id); // doesn't exist. I checked the contentDocument with a for (var each in cd) loop.
通过这个 contentDocument (cd),我可以操纵内容。 (就像更改文本区域的值一样。)所以这样就可以了。
但是我想通过比较 id 来找到正确的文档对象,而不是通过比较 URL!我怎样才能做到这一点?
(这里有一个类似的问题,答案建议在选项卡上使用 linkedBrowser。但是选项卡没有该属性。它会抛出错误,并且使用 for (var every in tab) 检查不会显示它要么。)
最佳答案
首先,您的代码实际上并不返回浏览器,而是返回 tabbrowser
(即窗口的 gBrowser
)。
document.id
不是 document
的标准属性。因此,由于它是在另一个安全上下文中定义的,因此您无法立即访问它。这是为了防止网站覆盖默认实现,从而可以提供附加假值。
由于您知道该值是网站定义的(因此不会被欺骗而相信虚假值),因此可以 unwrap the document
object通过访问 .wrappedJS
属性。
纠正这两个问题,这里有一些应该可以工作的代码(尽管我没有测试它):
function findBrowserPerURL(url) {
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
var browserEnumerator = wm.getEnumerator("navigator:browser");
// Check each browser instance for our URL
while (browserEnumerator.hasMoreElements()) {
var browserWin = browserEnumerator.getNext();
var tabbrowser = browserWin.gBrowser;
// Check each tab of this browser instance
var numTabs = tabbrowser.browsers.length;
for (var index = 0; index < numTabs; index++) {
var currentBrowser = tabbrowser.getBrowserAtIndex(index);
if (url == currentBrowser.currentURI.spec) {
// The URL is already opened. Select this tab.
tabbrowser.selectedTab = tabbrowser.tabContainer.childNodes[index];
// Focus *this* browser-window
browserWin.focus();
return currentBrowser;
}
}
}
return null;
}
var browser = findBrowserPerURL("file:///F:/myfile.html");
if (browser) {
alert(browser.contentDocument.wrappedJSObject.id + " " + browser.contentDocument.wrappedJSObject.name);
}
关于javascript - Firefox-Addon 如何找到 window.name ="mywindow"的选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24573203/
我正在尝试制作一个简单的 PyQT4 应用程序,它可以让我在单个消息框中显示两个文本框中的文本。它非常简单,所以我确信我错过了一些非常小的东西。 感谢您的帮助。 import sys from PyQ
我这里有一个带有 Storyboard的通用项目。我创建了一个名为 MyWindow 的 UIWindow 子类,我需要加载它而不是默认的 UIWindow。在 Storyboard之前,我只需转到
我正在运行 Firefox 30。我打开了一些选项卡。其中一个是我的 local-html 文件,我在其中尝试将 window.id 或 document.id 设置为“myhtmlpage”。 ..
我有一个很奇怪的问题,下面的代码无法编译: #ifndef MYWINDOW_HPP_INCLUDED #define MYWINDOW_HPP_INCLUDED class MyWindow{
我是一名优秀的程序员,十分优秀!