JavaScript-javascript引入html关联的javascript文件
javascript运行在客户端的浏览器中,我之前做一个练习,我在<head>标签中追加了一些<script>标签,然而这些javascript标签都不能正常加载。然后我就理了一下整个执行过程:
①web服务器将根据需求产生的页面全部发送到客户端浏览器。
②浏览器解析执行script。
③修改html的dom结构。(增加了的资源链接是否会重新像服务器发送请求,求解答。)
静态页面的执行过程应该是直接装载文件吧,之后遇到新链接浏览器是否也会重新请求。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
var script=document.createElement('script');
script.text='alert();';
document.body.appendChild(script);
这样各浏览器都是可行的,像你那样
document.body.innerHTML+="https://www.wenjiangs.com/wp-content/uploads/stackoverflow/202207/<script>alert();</script>";
是不行的
我是理解浏览器只渲染innerHTML中的内容
而要执行脚本只能使用appendChild(script)
或者 修改script.text才能执行
是重新请求的,我不知道这个符不符合你的但是
<script type='text/javascript'>...</script>//这个就可以正常加载
<script type='javascript'>...</script>//这个绝大部分不能正常加载
做了些实验, 楼主直接append一个字符串的方式来引进js是可以的, 但是还不够好.
先给出例子, 在楼主基础上稍微改了改:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jquery ui</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$("head").append('<script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>');
$(function(){
$("#dialog").dialog();
});
</script>
</head>
<body>
<div id="dialog" title="Basic dialog">
<p>This is the default dialog which is useful for displaying information.</p>
</div>
</body>
</html>
firebug中可见, jquery-ui.js确实被加载了, 但是我没有看到jqueryui的dialog效果, 究其原因, $("#dialog").dialog();在jquery-ui.js在被加载完成前就执行了. 那么稍微修改一下:
<script type="text/javascript">
$("head").append('<script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>');
$(function(){
setTimeout(function(){$("#dialog").dialog();}, 5000);
});
</script>
嗯,虽然有延迟, 但是确实可以看到jqueryui的dialog效果了.
不过这种解决方案太烂了,万一js 5秒都没有加载完呢? 我找到jquery的getScript方法, 效果还不错, 最终代码为:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jquery ui</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$(function(){
$("#dialog").hide();
$.getScript("http://code.jquery.com/ui/1.10.3/jquery-ui.js", function(){$("#dialog").dialog();});
});
</script>
</head>
<body>
<div id="dialog" title="Basic dialog">
<p>This is the default dialog which is useful for displaying information.</p>
</div>
</body>
</html>