【问题标题】:Adding divs to the HTML body using Lift使用 Lift 将 div 添加到 HTML 正文
【发布时间】:2010-08-06 11:39:19
【问题描述】:

我最近一直在玩 Scala/Lift/Comet/Ajax 等。我遇到了一个问题,归结为:

总结

当某个事件发生时,我想更新一个特定的div(通过 id)。如果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 错误:

铬:

Uncaught Error: NO_MODIFICATION_ALLOWED_ERR: DOM Exception 7

火狐(萤火虫):

An invalid or illegal string was specified" code: "12

在浏览器中比较来源

在浏览器中比较页面源时,我只能看到一个区别,即:Lift 在结束 &lt;/body&gt; 标记之前添加了以下 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") ~&gt; JqAppend() 创建新的 div 时,它起作用了。我只是不知道如何检查 div id 是否已经存在。这就是为什么我将代码移到模板中,计划使用 Lift 的Call 函数来执行 JS 函数。那就是这些问题开始的时候......

谢谢!

【问题讨论】:

  • 你的 JavaScript 中有一个小错误(应该如下所示): $('body').append('
    ' +
  • 谢谢维克多。我的第一反应是:“我应该抓住它,但肯定不会导致问题”。你猜怎么着?它做了。当我添加建议的引号时,错误消失并添加了 div。如果您将此作为答案发布,而其他人没有就发生这种情况的原因发布一个很好的解释,我会将您的答案标记为已接受。

标签: javascript dom scala lift


【解决方案1】:

我最近遇到了一个类似的问题,根据我收集到的信息,问题是因为通过 lift 提供的页面是 XHTML 提供的,如果页面是 XHTML 与. HTML。我不知道这是 jQuery 或 Safari 的错误,还是只是 XHTML 中不可能的问题,但修复它的快速方法是修改您的 Boot.scala 以告诉 Lift 不要使用 XHTML 作为 mime 类型用这一行:

LiftRules.useXhtmlMimeType = false

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签