添加动态生成的内联JavaScript的替代方法

时间:2009-08-18 18:38:14

标签: javascript

在HTML中生成内联JavaScript一直让我觉得很脏,在使用YUI之后我觉得最好利用HTML元素作为替代。使用隐藏的< ul>是否会疯狂?存储静态JavaScript使用的密钥和值,只有在找到< ul>时才会起作用。而不是使用内联JavaScript?

哪些实践很常见,哪些实践在避免内联JavaScript方面最有价值?

7 个答案:

答案 0 :(得分:3)

我正在做的事情之一就是在某些JSON标记内输出(来自PHP)一些SCRIPT,这些标记将在我的JS代码中使用。像这样:

<script type="text/javascript">

var db_data = <?php echo json_encode($db_data); ?>;

process_db_data_from_js(db_data);

</script>

我相信Flickr正在使用这样的搜索建议。

答案 1 :(得分:2)

您可以向元素添加属性,然后使用非静态或静态JS来查找它们。

<div id="..." extraAttribute="whatever">
</div>

使用JQuery,很容易找到。

var extraDivs = $('div[extraAttribute]');

(我强烈推荐使用JQuery进行此类编码。)

答案 2 :(得分:1)

根据动态生成的JavaScript的性质,可能不需要将其放在内联中。您可以简单地创建一个PHP文件来获取一些参数并生成JavaScript代码,然后使用标题中的脚本标记(例如<script src="foo.js.php?a=b&c=d&x=y&foo=bar">)调用带有所需参数的PHP文件。这就是我处理动态JavaScript生成需求的方式。

答案 3 :(得分:0)

我不确定我理解这个问题。您是否尝试从服务器端添加动态JavaScript数组并将其注入页面?

如果是这样,使用某些Ajax并返回一些JSON会不会更容易?

答案 4 :(得分:0)

另一种可能性是动态生成.js文件,就像动态生成.html(或其他)文件一样。

答案 5 :(得分:0)

我认为将JavaScript插入文档是很合理的,特别是当您填充随页面动态变化的数据时。我认为将这些数据存储在HTML标记中而不是放入内联脚本是没有任何好处的。

您应该做的是通过将可以移动到单独的JavaScript文件的代码分解来最小化所需的内联脚本数量。

答案 6 :(得分:0)

如果您需要从服务器端应用程序获取一些数据到JavaScript中,我发现最好使用Ajax。

当然,你可以把它放到HTML元素中,但这很麻烦,并且会在HTML中造成错误的语义。此外,使用lynx的人会将其视为您网页的一部分。

您也可以动态生成JavaScript本身,但这会留下您必须要防范的其他一系列问题,甚至可能是JavaScript注入。