2014-10-22 3 views
3

Здесь есть много одинаковых вопросов. Я пробовал все решения - ничего не помогает.javascript redirect не работает в любом случае

Я хочу открыть новую страницу на одной вкладке с помощью javascript. Вот мой HTML:

<head> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" ></script> 
<script src="functions.js"></script> 

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Untitled Document</title> 
<link href="css.css" rel="stylesheet" type="text/css" /> 

</head> 
<body> 
... 
<label> 
<input type="image" name="imageField" id="loginClient" onclick="testUrl()" src="images/index_33.gif" /> 
</label> 
... 
</body> 
</html> 

Вот мой functions.js:

function testUrl() 
{ 

window.location = "content.html"; 

} 

function loginClient() 
...//more functions 

Я тоже попробовал другие способы:

window.location.replace("content.html") 

top.location="content.html" 

window.location.assign("content.html") 

window.open("content.html", "_self") 

window.location.href="content.html" 

window.event.returnValue = false; 
window.location = "content.html"; 

setTimeout(function(){window.location.assign("content.html");return false;},500) 

ничего не работает, я пробовал в Opera, Firefox (все в Windows) и Chrome (Debian). НО это работает, если я изложу:

window.open("content.html") 

, но в новой вкладке, не решение, мне это нужно в той же вкладке.

НО, если я попытаюсь отладить его с помощью Firebug и щелкнуть всегда «Шаг в», чем все решения. И если я настрою alert() перед перенаправлением, он тоже работает.

Консоль не отображает ошибок. Я понятия не имею, помогите.

RESOLVED: Благодаря @lonesomeday!

это решение:

$(document).ready(function(){ 
    $("#loginClient").click(function(event){ 
     event.preventDefault(); 
     window.location = "content.html"; 
    }); 
}); 
+0

Вы хотите, чтобы открыть ссылку на той же вкладке, где вы находитесь, на той же странице ??? –

+0

Работает для меня. Убедитесь, что ваш файл 'functions.js' фактически включен (например, путь прав). –

+0

Является ли ваш вход #loginClient внутри формы? –

ответ

5

Вы получили этот onclick атрибут в <input type="image"> элемента. Входы изображения эффективно submit кнопок. Когда вы нажимаете на нее, она активируется, и форма отправляется. Когда форма отправляется, она отменяет любые текущие HTTP-запросы, такие как ваш вызов window.location.

Поэтому вам необходимо предотвратить отправку формы.

Быстрый и грязный способ сделать это, чтобы вернуть false из вашего обработчика событий. Что-то вроде этого:

onclick="return testUrl()" 

С JS:

function testUrl() 
{ 
window.location = "content.html";  
return false; 
} 

хорошеет способ сделать это было бы связать обработчик событий с Javascript и использовать event.preventDefault.

+1

Это только в том случае, если 'input' находится внутри элемента' form'. Что OP работает в противном случае и не показывает 'form' per se ... –

+0

@JaredFarrish Он находится в элементе' form'. В противном случае это сработает. Элемент 'form' явно содержится в' ... '. – lonesomeday

+0

Вход в элемент формы. Я попытался вернуть false; только сейчас - не работает –

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