Я недавно играл с Scala / Lift / Comet / Ajax и т. Д.Я столкнулся с проблемой, которая сводится к следующему:
Сводка
Я хочу обновить определенный div
(по идентификатору), когда происходит определенное событие.Если div
еще не существует, его необходимо создать и добавить в тело HTML.
В настоящее время я не могу заставить это работать при использовании платформы Lift.
Исходный файл
LIFT_PROJECT / src / main / webapp / static / mouseViewTest.html:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
// <![CDATA[
$(document).ready(function() {
updateOrCreateMouseDiv('123', 'coords')
});
function updateOrCreateMouseDiv(uniqueId, coords) {
if ($('#mouse_'+uniqueId).length == 0) {
$('body').append('<div id=' + uniqueId + '>' + coords + '</div>');
}
$('#mouse_'+uniqueId).html(coords)
}
// ]]>
</script>
</head>
<body></body>
</html>
Ошибка
Если я открою указанный выше файл непосредственно в браузере (file:///LIFT_PROJECT/src/main/webapp/static/mouseViewTest.html
)он работает, т.е. создается новый div
.
Но если я запускаю его через Lift / Jetty (http://localhost:8080/static/mouseViewTest
), я получаю следующую ошибку JavaScript:
Chrome:
Uncaught Error: NO_MODIFICATION_ALLOWED_ERR: DOM Exception 7
Firefox (Firebug):
An invalid or illegal string was specified" code: "12
Сравнение источников в браузере
При сравнении источников страниц в браузере я вижу только одно отличие, а именно: Lift добавляетследующий JavaScript перед закрывающим тегом </body>
:
<script type="text/javascript" src="/ajax_request/liftAjax.js"></script>
<script type="text/javascript">
// <![CDATA[
var lift_page = "F320717045475W3A";
// ]]>
</script>
Вопросы
Кто-нибудь знает, почему это происходит?
Если я хочу переместитьКод JavaScript в файл Scala (с использованием поддержки Lift JavaScript и jQuery), как будет выглядеть код?
Обратите внимание: когда я использовал Jq("body") ~> JqAppend()
для создания новых div, это работало.Я просто не знал, как проверить, существует ли div id.Вот почему я переместил код в шаблон, планируя использовать функцию Lift Call
для выполнения функции JS.И вот, когда эти проблемы начались ...
Спасибо!