2015-04-24 3 views
1

Учитывая следующий код:Различные «возвращение нулевые» результаты в Chrome и Firefox

jQuery(document).ready(function($) { 
 
     $('[name="clickableTD"]').click(function() { 
 
      window.document.location = $(this).attr("href"); 
 
     }); 
 
}); 
 

 

 
function Add(id) { 
 
    
 
\t 
 
    var stock = "2"; 
 
\t 
 
    var quantity = prompt("SELECT QUANTITY:", 1); 
 
    
 
    if (quantity == null) { 
 
     return null; 
 
    } 
 
    
 
    else if (quantity <= stock) { 
 
     alert("Good"); 
 
    } 
 
\t 
 
\t else if (quantity > stock) { 
 
     alert("Over"); 
 
\t } 
 
\t 
 
\t else if (isNaN(quantity)) { 
 
     alert("NaN"); 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 

 

 
<table border="1"> 
 
    <tr> 
 
    <td name="clickableTD" href="javascript:Add('1')"> 
 
     <a>Click</a> 
 
    </td> 
 
    </tr> 
 
</table>

Если пользователь возвращает нулевое значение (нажав кнопку Отмена), используя Chrome в браузере ничего не происходит, как и следовало ожидать.

Но если пользователь использует Firefox, он будет перенаправлен на url Add() и отобразит null как текстовую строку на экране.

Почему Firefox реагирует иначе, чем Chrome?

+1

Пожалуйста, покажите весь код, чтобы мы могли видеть, как эта функция используется. – Barmar

+0

Что такое 'function_name()' и как оно связано с кодом, который вы опубликовали? – Barmar

+0

@ adamdc78 Что это за тип, он не тестирует это? – Barmar

ответ

2

У меня возникли проблемы с поиском подробной спецификации того, как работают URL-адреса javascript:, и что они должны делать, когда код возвращает что-то, отличное от строки или неопределенной. Похоже, Chrome и FireFox в этом случае использовали разные подходы. Chrome рассматривает их как undefined и не меняет содержание страницы. FF выполняет различные действия: если он возвращает null, он отображает строку null; если он возвращает объект с единственным свойством, он отображает значение этого свойства.

Используйте return void(0) или return undefined вместо null для лучшей совместимости между браузерами.

+0

Я мог бы просто удалить значение if = null. Но почему в зависимости от браузера существуют разные реакции? – helloworld

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