2013-08-02 3 views
1

Я работаю над веб-страницей, которая будет состоять из большого основного кадра, с небольшим кадром по дну с текстовым полем и кнопкой отправки. Мне нужна кнопка отправки, чтобы изменить основной фрейм на URL-адрес в текстовом поле. Мой код ниже, но он работает только в том случае, если URL-адрес заканчивается именем файла (например, index.htm). Он не будет работать, если URL-адрес заканчивается на .com или/folder/where index.htm. Как я могу это исправить?Как открыть URL-адрес в текстовом поле в отдельном фрейме?

Вот мой html/javascript. В моей index.htm у меня есть:

<html> 
<head> 
<title>Menu Bar</title> 
</head> 
<frameset rows="*,30"> 
<frame src="main.html" name="main" id="main"> 
<frame src="menu.html" name="menu" id="menu"> 
</frameset> 
<body> 
</body> 
</html> 

main.html в основном пустой HTML документ (он имеет базовый HTML, головы и тела форматирования только).

Вот menu.html:

<html> 

<head> 
<script language="JavaScript"> 
function go(){ 
URL = document.myForm.theURL.value; 
parent.main.location=URL; 
} 
</script> 

</head> 
<body> 

<form name="myForm"> 
<input type="text" name="theURL" size="50"> 
<input type="button" value="Go" onClick="go()"> 
</form> 

</body> 

</html> 
+0

Попробуйте 'parent.main.location.href' вместо голого' location'. Фактически 'location' является _object_, который имеет свойства, такие как' href' и методы типа 'reload()'. 'frameset' и 'frame' не поддерживаются HTML5, поэтому может возникнуть путаница в« естественном »поведении объекта« location »в современных браузерах, когда им нужно реализовать« frameset's ». – Teemu

+0

@Teemu Все еще не работает. Просто загружает пустую белую страницу. Спасибо хоть. Любые другие идеи? Также я пишу эту веб-страницу для nintendo 3ds, поэтому нужно работать только с netfront nx 1.0, если это имеет значение. – thealeks

+0

Вы проверяли содержимое «URL» перед тем, как использовать его в качестве URL-адреса? Хотя я должен признать, что я не знаком с Nintendo 3ds. Работает ли обычная ссылка без имени файла? – Teemu

ответ

0

Я не знаю, почему это происходит, но вы можете использовать этот обходной путь:

function go(){ 
    var URL = document.getElementById('myForm').theURL.value; 
    if (URL) { 
     url = URL.split('/'); 
     if (url[url.length - 1].indexOf('index.htm') < 0) { 
      url[url.length] = 'index.htm'; 
      URL = url.join('/'); 
     } 
    } else {return;} 
    parent.main.location.href = URL; 
    // or: parent.main.contentWindow.location.href = URL; 
} 

Для использования этого вам необходимо установить id="myForm" в form элемент.

+0

Будет ли это работать на всех сайтах? Я пытаюсь сделать «меню» меню, которое остается и предоставляет функции, пока вы просматриваете «main». – thealeks

+0

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

+0

ОК его почти работает. если я набираю http://www.google.com, он загружает белую страницу. но если я набираю http://www.google.com/, он загружает страницу с ошибкой google 404, говорящую, что /index.htm не найден на сервере – thealeks

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