У меня возникла проблема с "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)

1 ответ1

0

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

Исправление

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

Затем запустите regsvr32 "C:\Program Files (x86)\Internet Explorer\IEPROXY.DLL" .

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

Источник

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .