script

IE 和 Firefox 可以通过特定方法使 innerHTML 方法载入的 SCRIPT 标...

萝らか妹 提交于 2019-12-12 10:59:53
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> IE 和 Firefox 可以通过特定方法使 innerHTML 方法载入的 SCRIPT 标签中的 JavaScript 代码在页面加载后也可以执行 标准参考 根据 W3C HTML4.01 规范中的描述,SCRIPT 标签内的 "脚本" 只会在页面加载时执行一次,或者通过绑定事件实现在页面加载后脚本能够重复地执行。 defer 属性是 SCRIPT 元素的特有属性,这是一个布尔型属性,它通知用户端这段脚本中不会生产文档内容(如 "documnet.write" ),所以不必现在立即执行,一般的拥有 defer 属性的 SCRIPT 元素中的脚本会较晚的被执行。 关于 SCRIPT 元素的详细资料,请参考 HTML4.01 规范 18 中的内容。 关于 defer 属性的详细资料,请参考 HTML4.01 规范 18.2.1 中的内容。 问题描述 在 IE6 IE7 IE8 中,当使用 innerHTML 方法插入脚本时,SCRIPT 元素必须设置 defer 属性。 在 Firefox 中,先将被插入 HTML 代码的元素从其父元素中移除,然后使用 innerHTML 插入包含 SCRIPT 元素的代码,最后将这个元素恢复至原父元素中,则经过此操作后 SCRIPT 中的脚本可以被执行。 造成的影响

关于 alert弹出消息的问题

对着背影说爱祢 提交于 2019-12-09 17:42:40
使用alert()后,页面和文字变形 在.net中,写一个弹出对话框Response.Write(" <script>alert('Hello!') </script>") ;发现弹出后页面会变形,原来看了源代码后发现执行弹出后他在HTML的最顶部加了<script>alert('弹出框内容!); </script> ,才会造成页面的变形。 解决方法(一): 使用ajax组件的函数,如下: System.Web.UI.ScriptManager.RegisterStartupScript(this, this.GetType(), "opennewwindow", "alert('弹出框内容!');", true); 解决方法(二): 在页面的body的最后一行放置一个控件,并在代码页里给这个控件赋值,如: label.Text="<script>alert('弹出框内容!); </script> "; 1.ClientScript.RegisterStartupScript(GetType(),"message","<script>alert('第一种方式,无白屏!');</script>"); 2.HttpContext.Current.Response.Write("<script>alert('第二种方式,有白屏!')</script>"); 3.public static

script的加载方式与执行

别等时光非礼了梦想. 提交于 2019-12-05 19:57:04
script一般是阻塞式加载的,H5新增了 async 、 defer 和 module 特性,可用于异步加载/延迟执行: async 属性是指当这个 script 可用时,就异步执行它 defer 属性是指当页面被解析完毕后,才能执行 如果以上两个属性都没有,则立刻下载并执行,同时阻止页面的解析,直到执行完毕 module 属性是指关联脚本全部下载后才会执行,且不受defer影响 标准定义详见: https://html.spec.whatwg.org/#the-script-element 关于async和defer aysnc 的 script 不能保证在 jQuery(document).ready 的时候是可用的,而 defer 可以。 这篇博文 给出了如下测试结果: jQuery(document).ready 的执行时序。 Chrome 下是:defer -> jQuery(document).ready -> async -> window.onload。 Firefox 下是:async -> defer -> jQuery(document).ready -> window.onload。 我又把 JavaScript 的下载速度变慢,发现结果仍然没有变化。 所以使用async的时候需要谨慎,全局的属性和方法最好提前定义。 动态加载javascript基本