(HTML/javascript) Обработка междоменного iframe

У меня есть страница, которая отображает другой веб-сайт (скажем, www.cnn.com) в iframe.

Все, что я хочу, это сделать так, чтобы ссылки внутри iframe открывались в родительском окне, а не внутри фрейма.

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

Есть ли вообще способ сделать это?

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

Я читал, что в Firefox (который я использую) можно получить расширенные разрешения в javascript, если скрипт «подписан» (или определенная запись конфигурации изменена). Однако я не знаю, как использовать эти расширенные разрешения для своих целей... какие-нибудь подсказки?

Я бы также рассмотрел разные подходы, например. не используя iframes вообще. Каким бы ни был метод, я хочу иметь возможность встраивать несколько веб-сайтов, которые я не могу контролировать, на одной странице. Ссылки, нажимаемые на любом из встроенных веб-сайтов, должны открываться в родительском окне. Это просто должно быть удобным инструментом для меня. Я должен сказать, что у меня практически нет знаний о javascript, и я просто учусь на практике. Если вы можете с уверенностью сказать, что то, что я хочу, невозможно с помощью каких-либо клиентских методов, это тоже поможет. Я думаю, было бы довольно просто сделать это, например. с php, но я не хочу настраивать веб-сервер, если в этом нет необходимости. Спасибо за любые советы!


person Matt    schedule 02.07.2011    source источник


Ответы (2)


Это немного другое решение, чем вы просили, но оно может быть лучшим способом решения проблемы, поскольку оно может дать вам возможность, которую вы ищете, без ущерба для обычной веб-безопасности.

Интересно, если Greasemonkey (надстройка для Firefox и других браузеров) может быть полезным решением для вас, поскольку оно позволяет вам запускать локальный javascript на других страницах, чтобы изменять их локально, в некоторой степени независимо от обычных ограничений безопасности. Таким образом, вы можете просмотреть все ссылки на странице CNN и изменить их, если вам это нужно.

Чтобы использовать его, вы должны установить надстройку Greasemonkey в Firefox, написать сценарий, который изменяет CNN.com так, как вы хотите, установить этот сценарий в Greasemonkey, а затем настроить сценарий только на веб-страницу CNN.com. Я думаю, что он должен работать на этом сайте, независимо от того, находится ли он в iframe или нет, но ваш скрипт, вероятно, может определить, был ли он в iframe, если вам это нужно.

person jfriend00    schedule 02.07.2011

Казалось бы, бесшовный атрибут HTML5 — это то, что вы ищете. Но похоже, что что-то еще не поддерживает это...

http://www.w3schools.com/html5/att_iframe_seamless.asp

person Anthony Sottile    schedule 02.07.2011