Скрипт jQuery возвращает новое окно в Firefox и Internet Explorer - PullRequest
1 голос
/ 09 мая 2011

У меня есть эта кнопка переключения для элемента на моей странице, и когда я нажимаю на нее, я вижу, что скрипт запускается и переключает элемент, но затем я получаю новое окно с возвращенным объектом JS [я думаю ..] , это просто пустое окно с URL моего href и там написано [object Object]
в Chrome это хорошо, но то есть и Firefox делают это. они так и делают, это

<a href="javascript:jQuery('#thatDude').toggle();">click</a>
<div id="thatDude">blah</div>

еще более странная часть в том, что у меня тоже есть мой файл сценария

jQuery('.someBtn').live('click', function() {
  jQuery('#someForm').toggle();
});

и когда я нажимаю на это - все работает отлично где угодно ... [да, я знаю, что я должен изменить live для делегата =]]

Кто-нибудь знает, что происходит? я использую jquery 1.6 [но 1.4.4 делает то же самое ..]

Большое спасибо

Ответы [ 2 ]

7 голосов
/ 09 мая 2011

Что происходит, так это то, что возвращаемое значение скрипта в URI javascript:, если это возвращаемое значение не является пустым, обрабатывается как HTML и анализируется как таковое.За исключением WebKit, который не реализует эту функцию (с одним исключением, упомянутым ниже).В вашем случае я предполагаю, что jQuery toggle() возвращает фактическое значение, которое не является неопределенным, и это значение обрабатывается как строка, которая должна быть проанализирована как HTML.

Вы можете увидеть поведение в этом простом тестовом примере в IEи Firefox и Opera:

<a href="javascript:'<h1>some text</h1>'">Click me</a>

Это полностью не работает в браузерах WebKit, хотя это работает в WebKit, потому что они специально взломали один код:

<iframe src="javascript:'<h1>some text</h1>'"></iframe>

Если вы хотите убедиться,возвращаемое значение вашего скрипта void, поставьте void(0) в конце скрипта.

0 голосов
/ 09 мая 2011

верните false из вашего обработчика события click, это должно помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...