2009-04-14 3 views
2

Есть ли способ захватить любую информацию сверху с помощью iframe в отдельном домене? Кто-то поручил мне проверки, что их реклама не рядом с вещи, как порнография, и т.д ... но их объявления всегда внутри IFRAME на сайтах издателей.Получить верхний href и innerHTML из iframe

Интересно, что когда я ставлю twitter.com в IFRAME, у них есть технология перебора IFrame включена - вот так:

<script type="text/javascript"> 
//<![CDATA[ 
    if (window.top !== window.self) { setTimeout(function(){document.body.innerHTML='';},1);window.self.onload=function(evt){document.body.innerHTML='';};} 
//]]> 
</script> 

Что меня поражает то, что, как и в другой области, они все еще имеют возможность получить window.top. Однако, когда я пытаюсь расширить эту функциональность window.top.location или window.top.href, чтобы получить URL в верхней части окна, я получаю

uncaught exception: [Exception... "Component returned failure code: 0x8007000e (NS_ERROR_OUT_OF_MEMORY) [nsIDOMNSHTMLDocument.write]" nsresult: "0x8007000e (NS_ERROR_OUT_OF_MEMORY)" location: "JS frame :: http://tester.tester.com/iframe3.html :: <TOP_LEVEL> :: line 9" data: no] 
http://tester.tester.com/iframe3.html 
Line 9 

, который на самом деле просто ошибка разрешения, что в настоящее время доложены Гекко (я думаю).

Любые мысли по этому поводу? Является ли утверждение равенства доступным, потому что iframe фактически не получает данные при получении самих данных, недоступен?

Любая информация, которую я могу получить, будет лучше, чем ничего, поэтому, пожалуйста, не стесняйтесь вставлять частичные ответы. Благодарю.

ответ

3

Доступен ли оператор равенства, потому что iframe фактически не получает данные при получении самих данных, недоступен?

Это древняя причуда JavaScript, в которой вы всегда можете получить объект «окна» междоменного фрейма/iframe/parent/opener. Но - по очевидным соображениям безопасности - вы не можете получить доступ к большинству участников объекта. Иногда случались способы обойти эти ограничения в прошлом из-за ошибок браузера, но на что вы можете положиться.

Практически единственное, что вы можете с пользой сделать с неизвестным объектом окна, это проверить, является ли он тем же объектом, что и другой известный объект окна, такой как текущий.

Если вы хотите проверить, находится ли неизвестное окно по крайней мере внутри вашего собственного домена, вы можете попытаться получить доступ к otherwindow.location внутри блока try...catch.

Есть ли способ захватить любую информацию сверху с помощью iframe в отдельном домене?

Нет, но вы можете записать заголовок «Referer» на конце HTTP-сервера, чтобы увидеть, на какой странице был включен < iframe>. Но наверняка ваша рекламная сеть должна делать это для вас уже в любом случае?

если (window.top == window.self!)

Любопытный; window.self - это то же самое, что и окно; Я не знаю, почему вы использовали более длинную версию. Кратчайший идиома для этого теста:

if (top!==self) 

, который работает до тех пор, пока вы не определения каких-либо других переменных, называемых «сверху» или «я».

+0

К сожалению, объявления, которые мы будем обслуживать, уже будут находиться в iframe, поэтому мы будем накладывать 2 слоя на iframe. Все остальное очень полезно. Благодаря! –

+0

Позор ... нет сообщений из рекламной сети, которая запускает промежуточный кадр? Я, конечно, хочу знать, куда идут мои впечатления ... – bobince

+0

Нет сообщений в реальном времени, которые я нашел еще. Имейте в виду, что нам нужны данные в момент взаимодействия, иначе гнусный сайт просто покажет нам страницы, которые не создают флагов, хотя это и делается в пакетном методе. –

Смежные вопросы