65.9K
CodeProject 正在变化。 阅读更多。
Home

Internet Explorer 5+ 扩展

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.38/5 (9投票s)

2005年5月13日

CPOL

3分钟阅读

viewsIcon

49383

downloadIcon

445

各种新旧 Internet Explorer 扩展,可通过“右键单击”获得。

Sample Image - ieextensions_menu.gif Sample Image - document_scripts.gif

引言

我第一次接触 Internet Explorer 的有用扩展是在 Microsoft 打包 IE4 Power Toys 时。 之后 IE5 似乎安静了下来,所以我借鉴了这些想法,并在 MSDN 文章 的一点帮助下,为 IE 创建了一些更有用的东西。

包含的扩展

  1. 显示/隐藏表格边框(针对页面) - 对 Web 开发/布局很有用。
  2. 查看选定源代码(针对选定的文本)*
  3. 查看样式表(针对页面)。
  4. 查看脚本(针对页面)。
  5. 高亮显示(针对选定的文本)*
  6. 取消高亮显示(针对选定的文本)*
  7. 放大(针对选定的图像)*
  8. 缩小(针对选定的图像)*

* 来自 IE4 Power Toys。

它是如何工作的?

整个过程完全在 HTML/JavaScript 中进行,并且 IE 可以获取浏览器中当前加载的文档的只读副本。 这意味着这些扩展对于节省工作量以了解页面的构成非常有用。

你能做什么?

最有用的是你可以通过以下 JavaScript 代码访问文档对象。

var win = external.menuArguments;
var doc = win.document;   //Owning document

这些行允许您将 `doc` 作为普通的文档对象进行寻址。

“显示/隐藏表格边框”页面仅通过以下 JavaScript 实现

<SCRIPT>
    var win = external.menuArguments;
    var doc = win.document;
    for (i=0;i<doc.all.tags("TABLE").length;i++) 
    {
        if (doc.all.tags("TABLE")[i].border == 0)
            doc.all.tags("TABLE")[i].border = 1;
       else
            doc.all.tags("TABLE")[i].border = 0;
    }
</SCRIPT>

关注点

新窗口

某些页面会创建新窗口。 需要记住的重要一点是,您只能对当前加载的浏览器文档进行“只读”操作。 这意味着如果您想显示有关页面的某些信息,您很可能需要创建一个新窗口。 以下页面(在安装中)提供了示例

  • showstylesheets.htm
  • viewselectedsource.htm
  • showscripts.htm

问题

我发现有很多陷阱...

  1. 框架往往会有问题,因为脚本运行的沙盒可能无法访问其他框架。
  2. 如果您打算弹出一个窗口来显示一些信息,请确保您没有运行任何弹出窗口阻止程序(否则您会收到权限被拒绝错误)。
  3. 您可能还会发现,在调试器中可以看到的某些属性无法通过此代码访问。 我发现在 IE6 中,`document.location` 等属性就是这种情况(但是,您可以使用 URL 代替)。

将所有内容连接起来

HTML 文件可以放在任何地方,但通常放在 *%systemroot%\web* 中(例如 *c:\windows\web* 或 *c:\winnt\web*),上下文菜单来自位于 `HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt` 的注册表项。

每个项目都可以应用于不同的上下文(有关实现的详细信息,请参阅 MSDN 文章)。

安装

我选择使用 Visual Studio .NET 创建 Windows Installer 包(我以前使用 *.inf* 文件)。 这会将 HTML 文件复制到 *c:\IEExtensions* 并创建适当的注册表项。 我选择这个文件夹位置是因为我没有在安装程序中根据操作系统放置条件!

请务必关闭所有 IE 实例,因为这些扩展程序在 IE 从头开始加载之前不会显示。

© . All rights reserved.