Некоторые «Bookmarklets» (Favlets) не работают с IE9 x32 на Windows 7 x64

0

У меня возникла проблема с «Bookmarklets» при использовании IE9 x32 в Windows 7 Home Premium x64.

У меня довольно сложный букмарклет, который работает на IE9 x64, но не работает на IE9 x32. Он также отлично работал на предыдущем компьютере (XP SP3 x32) с использованием IE6 и IE7.

Я уменьшил это и закончил с этим:

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.

Я просмотрел все настройки из Сервиса -> Свойства обозревателя и все выглядит правильно.

Я также сделал сброс IE: Инструменты -> Свойства обозревателя -> Дополнительно -> Сброс. Это не имело никакого эффекта.

И я уже пытался отключить все надстройки ("C: ... \ iexplore.exe" -extoff). Опять без эффекта.

Похоже, что "x.document.write(...)" в основном игнорируется на IE9 x32. Итак, я предполагаю, что это какой-то параметр безопасности, но, поскольку он работает в IE9 x64 ... кажется, что он должен быть настроен специально для x64 и x32, я не знаю, с чего начать.

Я попытался отладить это (x32) с помощью инструментов MS Developer. В моем первом (простейшем) примере отладчик всегда останавливается (прерывается) в операторе 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)
Kevin Fegan
источник
Что произойдет, если вы отключите защищенный режим IE?
Karan
@Karan - У меня уже отключен защищенный режим: Сервис -> Свойства обозревателя -> Безопасность -> Локальная интрасеть -> Включить защищенный режим: не отмечено. (Сервис -> Свойства обозревателя -> Безопасность -> Интернет -> Включить защищенный режим включен / проверен). Я не вижу эту настройку для «Мой компьютер».
Kevin Fegan
@Karan - я нашел эту статью: Как включить зону безопасности «Мой компьютер» в окне «Свойства обозревателя» что позволяет отображать значок «Мой компьютер» в разделе «Сервис» -> «Свойства обозревателя» -> «Безопасность». Я пытался это временно ... значок отображается, но он не работает в некотором роде "опасным" способом. Так что не повезло.
Kevin Fegan

Ответы:

0

Я столкнулся с этой проблемой, и это на самом деле не в настройках. Это связано с IE, использующим неправильную DLL для обработки window.open() функциональность.

Исправление

Как администратор, запустите regsvr32 /u C:\Windows\SYSWOW64\DOCOBJ.DLL из папки system32.

Тогда беги regsvr32 "C:\Program Files (x86)\Internet Explorer\IEPROXY.DLL",

Это сработало для меня и window.open() теперь работает правильно.

Источник

Alex McKenzie
источник