Невозможно получить объект документа для главной страницы определенных сайтов в Opera - PullRequest
0 голосов
/ 18 января 2011

Мы создаем расширение для оперы, в котором мы пытаемся использовать свойство объекта документа (document.body.innerHTML) для получения источника главной страницы сайта.В большинстве случаев он предоставляет нам правильный источник страницы, но для некоторых сайтов (имеющих несколько уровней документа) он не возвращает самый верхний документ.

Например, для сайта (https://www.pcisecuritystandards.org/) мы хотели бы получить исходную информацию для главной страницы, которая отображается, но после загрузки всей страницы свойство документа будет отображать источник для другого слоя (https://s7.addthis.com/static/r07/sh29.html#cb=0&ab=-&dh=www.pcisecuritystandards.org&dr=&du=https%3A%2F%2Fwww.pcisecuritystandards.org%2F&dt=Official%20PCI%20Security%20Standards%20Council%20Site%20-%20Verify%20PCI%20Compliance%2C%20Download%20Data%20Security%20and%20Credit%20Card%20Security%20Standards&inst=1&lng=en&pc=men&pub=&ssl=1&sid=4d2ee1f94278e71b&srd=1&srf=0.02&srp=0.2&srx=0&ver=250&xck=0&rev=86981&xd=1)

Возможно, это связано с тем, как Opera загружает слои документа на странице. У нас не было проблем с любым другим браузером

Как мы можем получить исходный код главной страницы (https://www.pcisecuritystandards.org/) собъект документа в Opera?

Ответы [ 3 ]

1 голос
/ 19 января 2011

Похоже, вы в <iframe>. Внедренные сценарии будут вставлены в верхний документ, а также в любой iframe на странице, поэтому просто проверьте, что вы находитесь в самом верхнем окне, прежде чем захватить innerHTML. Что-то вроде if (window.self == window.top).

0 голосов
/ 21 января 2011

Мы проверили и обнаружили, что в случае с оперой мы не получаем ссылку на самый верхний объект документа независимо от того, какое свойство документа или окна мы пытались использовать. Фактически мы пытались использовать window.top и window.parent, но, похоже, ничто не обеспечивало дескриптор объекта окна, и эти свойства возвращали значение null.

Что касается этого «вставленные сценарии будут вставлены в верхний документ, а также в любой iframe на странице», мы получили предупреждение (которое мы включили в вставленный сценарий) только из iFrame, но не из самого верхнего окна. мы обнаружили, что вы сказали, что это правда только в Google Chrome и Safari.

0 голосов
/ 18 января 2011

Вы пытались использовать стрекоза , полезно понять, что происходит с Opera.Прямо сейчас я использую Opera 11 и когда я иду на страницу, которую вы упомянули.У меня есть несколько вещей в innerHTML.

"<div style="visibility: hidden; height: 1px; width: 1px; position: absolute; z-index: 100000" id="_atssh"><iframe id="_atssh827" style="height: 1px; width: 1px; position: absolute; z-index: 100000; border-top-color: currentColor; border-left-color: currentColor; border-right-color: currentColor; border-bottom-color: currentColor; border-top-width: 0px; border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-top-style: none; border-left-style: none; border-right-style: none; border-bottom-style: none; left: 0px; top: 0px" src="//s7.addthis.com/static/r07/sh30.html#cb=0&amp;ab=-&amp;dh=www.pcisecuritystandards.org&amp;dr=&amp;du=https%3A%2F%2Fwww.pcisecuritystandards.org%2F&amp;dt=Official%20PCI%20Security%20Standards%20Council%20Site%20-%20Verify%20PCI%20Compliance%2C%20Download%20Data%20Security%20and%20Credit%20Card%20Security%20Standards&amp;inst=1&amp;lng=fr&amp;pc=men&amp;pub=&amp;ssl=1&amp;sid=4d358407b896251f&amp;srd=1&amp;srf=0.02&amp;srp=0.2&amp;srx=0&amp;ver=250&amp;xck=0&amp;rev=88088&amp;xd=1"></iframe></div>
    <a name="top" id="top"></a>
    <div id="container">
      <a name="index" id="index"></a>
[…etc]

<h2>NEWS</h2>

Так что мы можем видеть раздел новостей, чтобы я действительно вернулся на главную страницу.Обратите внимание, что некоторая разметка была введена через сценарии.Не могли бы вы вставить фрагмент кода, который вы используете.

...