2017-01-31 3 views
8

Когда я перемещаюсь по моему сайту ASP.NET, я получаю следующие исключения JQuery при использовании Internet Explorer. Кроме того, я использую Telerik Controls набор для ASP .NET & Visual Studio 2012.Исключения JQuery с использованием Internet Explorer 11 и ASP .NET

enter image description here

Если я проверить номера строк в ScriptResource.axd? D = ... (файл Telerik в) :

/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ 

a.querySelectorAll("*,:x"), //Line 10673 

s.call(a,"[s!='']:x"), //Line 10898 

И в моих Jquery-2.1.0.min.js:

/*! jQuery v2.1.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ 

a.querySelectorAll("*,:x") //Line 10357 

q.call(a,"[s!='']:x") //Line 10571 

В обоих файлах я получаю исключение в тех же двух предложениях. Эти исключения не вызывают поведения при расширении, но я не люблю их видеть в Visual Studio, так как может быть сигнал о том, что что-то не так.

ПРИМЕЧАНИЕ. Если я удалю JQuery или стандартный JQuery от Telerik, ошибка все еще существует. Даже если я установил JQuery от Telerik, чтобы использовать стандартную, все еще есть ошибка. Кроме того, нет ошибок в консоли.

Что происходит?

+0

Я уверен, что Telerik поставляется с JQuery, упакованной в нем, тот факт, что вы добавляете его снова, скорее всего, проблема. – Seano666

+0

@ Seano666 Я удалил включение Jquery-2.1.0.min.js, и ошибка все еще там, кажется, что речь идет не о двойном включении. – DiegoS

+0

Та же ошибка в той же строке сейчас? – Seano666

ответ

2

Короткий ответ:

Там нет ничего плохого с JQuery - иногда это делает свой «грязный» бизнес, чтобы сделать ваши руки чистыми, так как иногда нет «чистого» способа сделать то, что должно быть сделано

TLDR;

Длинный ответ:

Похоже, что в обоих случаях вы видели поймали ошибки из JQuery, так как, по словам Telerik documentation, некоторые элементы управления Telerik зависит от JQuery - так что вы бы JQuery из окна

Об исключениях - после загрузки jQuery его функция обнаруживает функцию - как вы знаете, поведение браузера варьируется для каждого браузера/версии, и часто нет способа сделать обнаружение, не пытаясь использовать функции и исключая исключения, если функция не поддерживается

Например, первое исключение (в a.querySelectorAll("*,:x")) происходит, когда JQuery сделать функцию обнаружения для селекторов, поддерживаемых document.querySelectorAll - вы можете просто найти его в путем поиска в github или в любом не уменьшенной jquery file:

// Opera 10-11 does not throw on post-comma invalid pseudos 
el.querySelectorAll("*,:x"); 
rbuggyQSA.push(",.*:"); 

Как вы можете видеть его предполагаемое поведение, и нет способа избежать этого, пока у вас есть jquery на вашей странице.

1

Команда jQuery использует исключения в определенных ситуациях для логического потока. Они используют функцию assert для обнаружения функций для каждого браузера.Если посмотреть в код JQuery, вы можете найти утверждают функции вроде следующего

function assert(fn) { 
    var el = document.createElement("fieldset"); 

    try { 
     return !!fn(el); 
    } catch (e) { 
     return false; 
    } finally { 
     // Remove from its parent by default 
     if (el.parentNode) { 
      el.parentNode.removeChild(el); 
     } 
     // release memory in IE 
     el = null; 
    } 
} 

Для desmontrate, я создал asp.net веб-страницу выборки, с помощью JQuery 3.1.1. Когда я запускаю веб-страницы локально, выбрав Internet Explorer и запустите его в Visual Studio, это повысит исключения, как этот

... 
'iexplore.exe' (Script): Loaded 'Script Code (Windows Internet Explorer)'. 
Exception was thrown at line 1361, column 4 in http://localhost:63177/Scripts/jquery-3.1.1.js 
0x800a139e - JavaScript 実行時エラー: SyntaxError 
Exception was thrown at line 1379, column 4 in http://localhost:63177/Scripts/jquery-3.1.1.js 
0x800a139e - JavaScript 実行時エラー: SyntaxError 
Exception was thrown at line 37, column 60610 in http://localhost:63409/15db952270ca47e19969bb659e432c6d/browserLink 
0x800a139e - JavaScript 実行時エラー: SyntaxError 
The thread 0x5250 has exited with code 0 (0x0). 
... 

Глядя на линии 1361 и 1379 в JQuery 3.1.1 код, вы найдете их ошибка поднятый нарочно.

Line 1360-1361

// Opera 10-11 does not throw on post-comma invalid pseudos 
el.querySelectorAll("*,:x"); 

Line 1377-1379

// This should fail with an exception 
// Gecko does not error, returns false instead 
matches.call(el, "[s!='']:x"); 

Поскольку исключение было обработано, команда Jquery не считают это проблемой. Вы можете передать подобную проблему по следующей ссылке https://bugs.jquery.com/ticket/14123

Он предназначен коды JQuery, так что я думаю, что вы могли бы оставить его как есть.

0

Если эта проблема возникает только при отладке веб-сайта/страницы в Visual Studio, попробуйте отключить Visual Studio -> вариант браузера Link либо с использованием соответствующего toolbar item или путем добавления следующего ключа к Web.config:

<appSettings> 
    <add key="vs:EnableBrowserLink" value="false"/> 
</appSettings> 

Обратитесь к следующему резьбу, чтобы узнать больше о различных известных эффектах Browser Link (по аналогии с вашим), связанными с вышеупомянутыми JavaScript ошибок:

VS 2013 Browser Link generated script causes jQuery reference to be broken when using RequireJS

Page uses an invalid or unsupported form of compression when debugging ASP.NET MVC app with Visual Studio 2013 Preview

Browser Link feature in Visual Studio Preview 2013

+0

Забыл сказать, что я использую Visual Studio 2012 :). Уже добавлен в вопрос. – DiegoS

+0

Итак, не применимо? ... – Mikhail

+0

Нет, исключение все еще там. Я думаю, он не доступен для Vs 2012 .. – DiegoS

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