Обнаружение причины Операции IE Прерванная Проблема

Найти самый длинный путь в графе - задача NP-Complete. Вопреки распространенному мнению, это не означает, что это не может быть решено за полиномиальное время (на самом деле это одна из самых больших нерешенных проблем в информатике P против NP ). Тем не менее, это означает, что это по крайней мере так же сложно, как самые сложные проблемы в NP. Другими словами, может быть эффективный алгоритм для решения этой проблемы, но пока никто не смог его найти. По сути, это невозможно решить эффективно. Знание того, что каждый узел имеет преимущество перед каждым другим узлом, не меняет того факта, что эта проблема является NP-полной.

6
задан ivan_pozdeev 5 September 2016 в 14:04
поделиться

5 ответов

есть какой-нибудь javascript, который манипулирует DOM, как описано в http://support.microsoft.com/kb/927917#more_information ?

Попробуйте переместить все блоки скриптов в самое нижнее страницы, непосредственно перед тегом , и не пытайтесь установить свойство innerHTML самого тега body.

Если проблема заключается в выполнении javascript до полной сборки DOM попробуйте переместить любые вызовы инициализации в функцию, которая будет выполняться только после полной загрузки страницы. Итак, вместо чего-то вроде этого:

<div class="myWidgetControl"/>
<script type="text/javascript">
  initializeWidgets();
</script>

Попробуйте что-то вроде этого:

<div class="myWidgetControl"/>
<script type="text/javascript">
  $(document).ready(
    function () { initializeWidgets(); }
  );
</script>
3
ответ дан 16 December 2019 в 21:46
поделиться

Это хитрый трюк, который я использовал (основываясь на ссылке в комментариях JS ниже), который полностью избегает ошибки Op Ab, не влияя на производительность в других браузерах. Сначала вы оборачиваете любой выполняемый скрипт, который может вызвать ошибку (например, загрузку / создание экземпляра стороннего виджета) в функции, затем вызываете эту функцию в функции delayExecutionForIE - обратите внимание, что вызов myFunction выполняется дважды, один раз для IE и один раз для хороших браузеров.

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

function delayExecutionForIE() {
      if ( typeof document.all == "object" && 
           (document.readyState != "loaded" 
           && document.readyState != "complete") 
         ) {
            try {
                  //If IE is used, use the trick by Diego Perini
                  //http://javascript.nwbox.com/IEContentLoaded/
                  document.documentElement.doScroll("left");
                  myFunction();
            } catch(error) {
                  setTimeout(delayExecutionForIE, 200);
            }
      } else {
            myFunction();
      }
}

function myFunction() {
    //this is your function that manipulates the DOM
}

delayExecutionForIE();
1
ответ дан 16 December 2019 в 21:46
поделиться

И Microsoft рекомендует обновить до IE8!

0
ответ дан 16 December 2019 в 21:46
поделиться

Хотя IE8 больше не будет приводить к тому, что эта ошибка полностью «вылетает» при рендеринге, вместо этого она регистрирует ошибку, но, к сожалению, она не перехватывается отладчиком JavaScript, обнаруженным в новых инструментах разработчика, и ошибкой сообщение не говорит вам, где на самом деле произошла ошибка.

Обходной путь, который, конечно, утомителен, но может обнаружить проблему, заключается в использовании отладчика IE8 для установки точки останова на самом первом выполняемом фрагменте кода JavaScript, и затем продолжайте нажимать кнопку «Шаг», пока значок ошибки не появится в левом нижнем углу браузера. Когда это происходит, вы знаете, что строка кода, которая вызывает ошибку, была выделена непосредственно перед тем, как вы щелкнули по шагу. Вероятно, это будет довольно много кода, через который вы будете проходить, но я могу Не думайте ни о чем другом (ну, кроме как связаться с поставщиками этого стороннего кода и узнать, есть ли у них какие-либо обновления, которые могут быть связаны).

Конечно, вы можете просто сказать своим пользователям перейти на IE8. ;)

0
ответ дан 16 December 2019 в 21:46
поделиться

Вы можете использовать сценарий, предоставленный IE Blog, для исследования проблемы. См .: http://blogs.msdn.com/ie/archive/2009/09/03/preventing-operation-aborted-scenarios.aspx

3
ответ дан 16 December 2019 в 21:46
поделиться
Другие вопросы по тегам:

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