Jquery问题:如何从script标签中获取文本?

4

我有一个小的HTML文档:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title>HTML Test</title>

        <script type="text/javascript" src="jquery-1.3.2.min.js"></script>

        <script type="text/javascript">
            $(document).ready(function()
            {
                $("script").each(function()
                {
                    if($(this).attr("type") == "code")
                    {
                        alert($(this).text());
                    }

                });
            });
        </script>

    </head>

    <body>

<script type="code">
var Text = "Text";
</script>

    </body>
</html>

当在Firefox中运行时,警告显示<script type="code">标签的文本内容。当在IE8中运行时,它不会显示任何内容。
你知道为什么吗?我很困惑。

2
脚本类型 code 没有我所知的任何规范。如果 IE 简单地阻止所有未知的脚本作为安全措施,我也不会感到惊讶。你想要实现什么?你可能需要考虑使用其他标记,比如 code 元素。 - David Hedlund
更改为 *<script type="text/javascript" </script>*。 - Moshe
1
他显然想使用脚本标签来存储一些信息,因此使用了非标准属性值。更改它不会帮助他的问题。您可以在这里看到类似的示例:http://ejohn.org/blog/javascript-micro-templating/ - Darko
是的,Darko说得对,我正在编写一个脚本来从<script>标签中获取源代码并将其重新格式化为表格。因此,我实际上并没有使用<script>在HTML页面上嵌入任何可执行代码。 - Gary Willoughby
那么<script>标签不是一个合适的标签。请参考http://stackoverflow.com/questions/324627/what-is-the-best-way-to-include-data-in-an-html-page和https://dev59.com/IEXRa4cB1Zd3GeqPvu2n,了解其他替代策略。 - bobince
问题是我想在页面上展示源代码。因此,脚本标签是适当的选择。我编写了一个类似于alexgorbatchev.com/wiki/SyntaxHighlighter的语法高亮引擎,并使用jQuery将脚本标签替换为格式良好的表格。如果我使用其他标记来包含源代码,则会被解析为HTML并更改代码。 - Gary Willoughby
3个回答

9
您可能会更幸运使用 .html(),如果这不起作用,请尝试使用 this.innerHtml。我没有测试过这个方法。
但是,我对您的代码有另一个提示。如果您只想要 code 类型的脚本,您可以使用单个选择器,而不必在循环中检查属性。
$("script[type=code]").each(function() {
    alert($(this).html());
    alert(this.innerHtml);
});

2

1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title>HTML Test</title>
        <script type="text/javascript" src="jquery-1.3.2.min.js"></script
        <script type="text/javascript">
            $(document).ready(function()
            {
                    $("script").each(function()
                    {
                            if($(this).attr("type") == "code")
                            {
                                alert($(this).html());
                            }
                    });
            });
        </script>
    </head>
    <body>
        <script type="code">
            var Text = "Text";
        </script>
    </body>
</html>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接