Отладка сценариев, добавленных через функцию jQuery getScript

Есть несколько способов преобразовать char в integer

char digit = '0';

int result = (int)char.GetNumericValue(digit);
int result = ((int)digit) - 48;
int result = digit - '0'; //fastest approach
int result = int.Parse(digit.ToString());
int result = Convert.ToInt32(digit.ToString());
int result = digit & 0x0f;

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

string input = "123";
int[] result = input.Select(x => x - '0').ToArray();
50
задан Brian Mains 4 March 2012 в 07:43
поделиться

1 ответ

Хорошо, таким образом, оказывается что реализация по умолчанию $.getScript() функционируйте работает по-другому в зависимости от того, является ли файл сценария, на который ссылаются, на том же домене или нет. Внешние ссылки, такие как:

$.getScript("http://www.someothersite.com/script.js")

заставит jQuery создавать внешнюю ссылку сценария, которая может быть отлажена без проблем.

<script type="text/javascript" src="http://www.someothersite.com/script.js"></script>

Однако, если Вы ссылаетесь на локальный файл сценария, такой как какое-либо следующее:

$.getScript("http://www.mysite.com/script.js")
$.getScript("script.js")
$.getScript("/Scripts/script.js");

затем jQuery загрузит содержание сценария асинхронно и затем добавит его как встроенное содержание:

<script type="text/javascript">{your script here}</script>

Этот последний подход не работает ни с каким отладчиком, который я протестировал (Визуальный Studio.net, Firebug, Отладчик IE8).

Обходное решение должно переопределить $.getScript() функционируйте так, чтобы это всегда создало внешнюю ссылку, а не встроенное содержание. Вот сценарий, чтобы сделать это. Я протестировал это в Firefox, Opera, Safari и IE 8.

<script type="text/javascript">
// Replace the normal jQuery getScript function with one that supports
// debugging and which references the script files as external resources
// rather than inline.
jQuery.extend({
   getScript: function(url, callback) {
      var head = document.getElementsByTagName("head")[0];
      var script = document.createElement("script");
      script.src = url;

      // Handle Script loading
      {
         var done = false;

         // Attach handlers for all browsers
         script.onload = script.onreadystatechange = function(){
            if ( !done && (!this.readyState ||
                  this.readyState == "loaded" || this.readyState == "complete") ) {
               done = true;
               if (callback)
                  callback();

               // Handle memory leak in IE
               script.onload = script.onreadystatechange = null;
            }
         };
      }

      head.appendChild(script);

      // We handle everything using the script element injection
      return undefined;
   },
});
</script>
75
ответ дан James Messinger 7 November 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: