Как я получаю текущее местоположение iframe?

Сброс настроек iPhone, Apple Watch и Mac устранил проблему.

46
задан studiothat 4 September 2008 в 18:07
поделиться

2 ответа

HTA работает как обычное приложение Windows.
Вы пишете HTML-код и сохраняете его как файл .hta.

Однако есть, по крайней мере, один недостаток: браузер не может открыть файл .hta; он обрабатывается как обычная программа .exe. Итак, если вы разместите ссылку на .hta на своей веб-странице, откроется диалоговое окно загрузки, в котором вас попросят открыть или сохранить файл HTA. Если для вас это не проблема, вы можете нажать «Открыть», и откроется новое окно (в котором нет панелей инструментов, поэтому нет кнопки «Назад», ни адресной строки, ни строки меню).

Мне нужно было сделать что-то очень похожее. как хотите, но вместо окон iframe я использовал настоящий набор фреймов .
Главная страница должна быть файлом .hta; другая должна быть обычной страницей .htm (или .php, или чем-то еще).

Вот пример страницы HTA с 2 фреймами, где на верхнем есть кнопка и текстовое поле, которое содержит URL-адрес второго фрейма; кнопка обновляет поле:

frameset.hta

<html>
    <head>
        <title>HTA Example</title>
        <HTA:APPLICATION id="frames" border="thin" caption="yes" icon="http://www.google.com/favicon.ico" showintaskbar="yes" singleinstance="no" sysmenu="yes" navigable="yes" contextmenu="no" innerborder="no" scroll="auto" scrollflat="yes" selection="yes" windowstate="normal"></HTA:APPLICATION>
    </head>
    <frameset rows="60px, *">
        <frame src="topo.htm" name="topo" id="topo" application="yes" />
        <frame src="http://www.google.com" name="conteudo" id="conteudo" application="yes" />
    </frameset>
</html>
  • Есть тег HTA: APPLICATION , который устанавливает некоторые свойства для файла; это хорошо, но не обязательно.
  • Вам НЕОБХОДИМО поместить application = "yes" в теги фреймов. Он говорит, что они тоже принадлежат программе и должны иметь доступ ко всем данным (если вы этого не сделаете, кадры все равно будут показывать ошибку, которая у вас была раньше).

topo.htm

<html>
    <head>
        <title>Topo</title>
        <script type="text/javascript">
            function copia_url() {
                campo.value = parent.conteudo.location;
            }
        </script>
    </head>
    <body style="background: lightBlue;" onload="copia_url()">
        <input type="button" value="Copiar URL" onclick="copia_url()" />
        <input type="text" size="120" id="campo" />
    </body>
</html>
  • Вы должны заметить, что я не использовал какую-либо функцию getElement для выборки поля; в файле HTA, все элементы, у которых есть идентификатор, мгновенно превращаются в объект

. Надеюсь, это поможет вам и другим, кто ответит на этот вопрос. Он решил мою проблему, которая выглядит такой же, как и у вас.

Вы можете найти дополнительную информацию здесь: http://www.irt.org/articles/js191/index.htm

Наслаждайтесь =]

1
ответ дан 26 November 2019 в 20:33
поделиться

Я провел несколько тестов в Firefox 3, сравнивая значения .src и .documentWindow.location.href в iframe ]. (Примечание: documentWindow называется contentDocument в Chrome, поэтому вместо .documentWindow.location.href в Chrome это будет .contentDocument.location .href .)

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

document.getElementById("myiframe").src = 'http://www.google.com/';

Если пользователь перемещается внутри iframe, вы больше не можете получить доступ к значению URL-адреса с помощью src . В предыдущем примере, если пользователь уходит с www.google.com, а вы это делаете:

alert(document.getElementById("myiframe").src);

, вы все равно получите "

50
ответ дан 26 November 2019 в 20:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: