在 Windows 7 x64 上使用 IE9 x32 时,某些“书签小工具”(Favlets)会失败

在 Windows 7 x64 上使用 IE9 x32 时,某些“书签小工具”(Favlets)会失败

我在 Windows 7 Home Premium x64 上使用 IE9 x32 时遇到了“书签小工具”问题。

我有一个相当复杂的书签,可以在 IE9 x64 上运行,但在 IE9 x32 上却无法运行。它在之前使用 IE6 和 IE7 的计算机 (XP SP3 x32) 上也能正常运行。

我将其简化并最终得到以下结果:

javascript:(function(){var x=window.open();x.document.write('<html><head><title>Testing</title></head><body><pre>Hello !!<br></pre></body></html>');})();


为了便于阅读,“格式化”后的样子如下:

javascript:
(function(){
  var x=window.open();
  x.document.write('<html><head><title>Testing</title></head><body><pre>Hello !!<br></pre></body></html>');
}
)();


将其放入书签后,我发现它在 IE9 x64 上仍然有效,但在 IE9 x32 上仍然失败。

我希望它打开一个新的浏览器窗口(或选项卡)并显示文本:

Hello !!


在 IE9 x64 上它会这样做,但在 IE9 x32 上,它会打开一个新的空白窗口(或选项卡),但不显示任何文本。

我在这台机器上使用 IE8 时遇到了同样的问题,但后来我升级到了 IE9。

我在另一个论坛上提出了这个问题,并收到了一些建议。实施这些建议后,我得到了以下结果:

javascript:(function(){var x=window.open("about:blank");x.document.open();x.document.write('<!-- saved from url=(0014)about:internet -->\n<html><head><title>Testing</title></head><body><pre>Hello !!<br></pre></body></html>');x.document.close();})();


为了便于阅读,“格式化”后的样子如下:

javascript:
(function(){
  var x=window.open("about:blank");
  x.document.open();
  x.document.write('<!-- saved from url=(0014)about:internet -->\n<html><head><title>Testing</title></head><body><pre>Hello !!<br></pre></body></html>');
  x.document.close();
}
)();


再次强调,此书签在 IE9 x64 上仍然有效,但在 IE9 x32 上仍然失败(与以前相同)。

我已检查了“工具”-->“Internet 选项”中的所有设置,一切看起来都正确。

我还重置了 IE:工具-->Internet 选项-->高级-->重置。这没有效果。

我已经尝试禁用所有附加组件 ("C:...\iexplore.exe" -extoff)。同样,没有效果。

IE9 x32似乎"x.document.write(...)"基本上忽略了。因此,我假设它是某种安全设置,但由于它在 IE9 x64 中有效...它似乎必须具有专门针对 x64 和 x32 的设置,我不知道从哪里开始。

我尝试使用 MS Developer 工具来调试此 (x32)。在我的第一个(最简单的)示例中,调试器总是在 x.document.write(...) 语句处停止(中断),我看到的错误消息是“标签无效。”。使用调试器,使用 IE9 x64 不会出现任何错误。

在我的第二个(最后一个)示例中,调试器总是在 x.document.open 语句处停止(中断),并且我看到的错误消息可能是“拒绝访问”或“标签无效。”。

这里有一些我的问题的“历史”以及一些截图:
Favlet(又名 Bookmarklet)在 IE 8-ecac 上失败

和这里:
Favlet(又名 Bookmarklet)在 IE 8-af33 上失败-



我也尝试过这些设置:

Tools-->Internet Options-->Security-->Local Intranet-->Enable Protected Mode:unchecked
(Tools-->Internet Options-->Security-->Internet-->Enable Protected Mode:checked)


HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_LOCALMACHINE_LOCKDOWN:iexplore.exe=REG_DWORD 0x00000000 (0)


HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0:1400=REG_DWORD 0x00000000 (0)

答案1

我遇到了这个问题,它实际上不在设置下。它与 IE 使用错误的 dll 来处理功能有关window.open()

修复

以管理员身份,regsvr32 /u C:\Windows\SYSWOW64\DOCOBJ.DLL从 system32 文件夹运行。

然后运行regsvr32 "C:\Program Files (x86)\Internet Explorer\IEPROXY.DLL"

这对我来说非常有效,window.open()现在可以正常工作。

来源

相关内容