Это еще одна интересная альтернатива https://github.com/Shy-Ta/expression-evaluator-demo
. Использование очень простое и выполняет задание, например:
ExpressionsEvaluator evalExpr = ExpressionsFactory.create("2+3*4-6/2");
assertEquals(BigDecimal.valueOf(11), evalExpr.eval());
Вы изменяете документ, в то время как он загружается (когда браузер не "видел" закрывающего тэга для этого элемента). Это вызывает очень щекотливую ситуацию в синтаксическом анализаторе и в IE, который это не позволяется.
блог IE имеет объяснение этого.
решение состоит в том, чтобы изменить другой элемент, которым это находится ранее в документе и было загружено полностью (где браузер уже видел закрывающий тэг для него).
BTW: строка </
не позволяется в <script>
элемент. Используйте <\/
, который является безопасным эквивалентом в строках JS.
Сниффинг браузера является клуджем, которого нужно избежать, если это возможно. Лучше осуществлять сниффинг для возможность , Вы хотите использовать. Скажите, что Вы хотите выполнить выражение XPath с помощью document.evaluate (), но Вы не знаете, поддерживается ли оно. Вместо того, чтобы осуществить сниффинг для поддерживаемых браузеров, сделайте это:
if (document.evaluate) {
// go ahead and use it
} else {
// browser doesn't support it; do something else
}
Лучший способ обратиться к IE только условные комментарии . Вы не должны даже использовать JavaScript. Посмотрите, например http://www.positioniseverything.net/articles/ie7-dehacker.html .
Как сказанный Sergey Kirienko: используйте условные комментарии. Код ниже будет только выполнен Internet Explorer. Microsoft имеет хорошую информацию о этот страница.
<!--[if IE]>
<script type="text/javascript">
showDialog('¡Aviso Importante!','message','warning',10);
</script>
<![endif]-->
, Если Вы хотите определенную версию, можно протестировать на тот также:
<!--[if lte IE 7]>
<script type="text/javascript">
showDialog('¡Aviso Importante!','Your are using a too old version of Internet explorer. Please upgrade','warning',10);
</script>
<![endif]-->
I had this same problem. My issue was that I was calling a Javascript function before the containing div
was closed.
To fix the problem, I call the Javascript function within the jQuery ready
event handler:
$(document).ready(function(){
some_random_javascript_function();
});
Возможно, немного поздно, но эта ошибка также появляется, если вы используете SWFObject и имеете 2 блока с одинаковым идентификатором.
У меня были дублирующиеся блоки div [с id = "flashcontent" благодаря функции копирования и вставки].
Решено путем переименования блоков div с уникальными идентификаторами.