我最近一直在玩Scala / Lift / Comet / Ajax等。我遇到了一个问题归结为:
我想在特定事件发生时更新特定的div
(按ID)。如果div
尚不存在,则必须创建它并将其附加到HTML正文。
目前,在使用Lift框架时,我无法使用它。
LIFT_PROJECT / SRC /主/ web应用/静态/ 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错误:
铬:
Uncaught Error: NO_MODIFICATION_ALLOWED_ERR: DOM Exception 7
Firefox(Firebug):
An invalid or illegal string was specified" code: "12
在比较浏览器中的页面源时,我只能看到一个区别,即:Lift在结束</body>
标记之前添加以下JavaScript:
<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函数。当这些问题开始时就是这样......
谢谢!
答案 0 :(得分:1)
我最近遇到了类似的问题,而且从我收集的问题来看,问题是因为提升服务的页面被用作XHTML,如果页面是XHTML,则写入DOM时会出现一些问题HTML。我不知道这是不是jQuery或Safari的错误,或者它只是XHTML中不可能的东西,但修复它的一个快速方法是修改你的Boot.scala告诉Lift不要使用XHTML作为mime类型用这一行:
LiftRules.useXhtmlMimeType = false