在HTML中生成内联JavaScript一直让我觉得很脏,在使用YUI之后我觉得最好利用HTML元素作为替代。使用隐藏的< ul>是否会疯狂?存储静态JavaScript使用的密钥和值,只有在找到< ul>时才会起作用。而不是使用内联JavaScript?
哪些实践很常见,哪些实践在避免内联JavaScript方面最有价值?
答案 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注入。