js兼容性 - 动态删除script标签后 ,定义的函数是否执行

hello.js
function hello(){
    alert(‘hello‘);
}

hello.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script id="hello" src="hello.js"></script>
</head>
<body>
</body>
<script>
    hello();
    if (-[1,]) {
        document.getElementById(‘hello‘).remove();
    } else {
        document.getElementById(‘hello‘).removeNode(true);
    }
    setTimeout(function(){
        hello();
    },1000);
</script>
</html>

会执行: Chrome,firefox,IE 11,Opera

不执行: Safari

暂时仅测试这些

时间: 2024-10-14 04:46:49

js兼容性 - 动态删除script标签后 ,定义的函数是否执行的相关文章

javascript动态创建script标签,加载完成后调用回调

代码如下: var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.charset = 'GBK'; script.onload = script.onreadystatechange = function() { if (!this.readyState || this.r

页面动态加入&lt;script&gt;标签并执行代码

在页面中动态追加html片段的时候,有时候动态添加的代码会含有<script>标签,比如用了一些模板引擎,或者你的代码有些复杂的时候.然而我们用DOM提供的innerHTML方式来添加代码的时候,<script>标签中的代码并不能执行,如果有src属性,指向的外联文件也不会被加载,这并不是浏览器的bug,因为w3c文档就是这么规定的. 那我们有什么办法可以恢复追加的<script>标签的代码执行能力呢? 重新构造<script>标签      这个思路其实非

JS动态引入js,CSS——动态创建script/link/style标签

一.动态创建link方式 我们可以使用link的方式.如下代码所示. function addCssByLink(url){ var doc=document; var link=doc.createElement("link"); link.setAttribute("rel", "stylesheet"); link.setAttribute("type", "text/css"); link.setA

原生js动态添加script标签

var scriptElement = document.createElement('script'); document.body.appendChild(scriptElement); scriptElement.src = "https://static.mlinks.cc/scripts/dist/mlink.min.js" 原文地址:https://www.cnblogs.com/jongsuk0214/p/9372053.html

JS 添加和删除HTML 标签

//添加一行价格 $('#add_ladder_price').click(function(){ var trHTML = '<tr align="center" class="tr_ladder_price">' + '<td><input style="text-align: center" type="text" name="purchases" value="

js实现动态删除表格的行或者列-------Day57

昨天记录了动态加入表格的一行,当然这个一行是指一行数据,也就是说一行多少列也是加上的,而且第几列的内容都能够加入上,先来回想下它的实现的关键点: 1.var row=table.insertRow();加入一行: 2.var cell1=row.insertCell();加入一个单元格:(假设在后面继续写var cell2=row.insertCell()的话.就是加入第二列;) 3.cell1.innerHTML="第一列的内容":向第一个单元格中填充值 以上就是昨天记录的动态加入一

关于JSP中&lt;body onload=&quot;fun()&quot;&gt;body标签中onload中函数不执行问题

问题描述: 在一个页面中,我们经常会初始化一下数据,而且会在指定的DOM元素初始化数据,这时候我们就会使用<body >来加载我们的数据.onload指的是在所有的DOM元素都加载完成才会执行JS函数,这为我们初始化动态的加载数据提供很大的帮助.但是有时候我们会发现,<body >中的fun()函数有时候会不执行.下面分析一下onload不执行的原因和解决方法. 问题解决方案: 1.页面加载时就出现错误. 这种是代码错误,可能是在加载DOM元素就报错,导致无法执行onload.这时

移除script标签引起的兼容性问题

一.应用场景: 有时候我们需要动态创建script标签实现脚本的按需加载,我们会为script标签绑定onload或者onreadystatechange事件,用于检测动态脚本是否加载并执行完毕,在事件处理程序中引用动态脚本创建的变量. 二.问题描述: 如果我们动态创建script标签并绑定事件处理程序后,立即移除script标签,那么事件处理程序是否会执行?如果能执行,那么能否正常引用动态脚本创建的变量? 三.看如下程序: function inviteFriends() { var self

JS 之 script标签

1.script标签 1.js代码的解析(包括下载js文件)会阻塞页面加载 2.当js文件放在头部,页面必须等所有js代码都被下载,解析和执行完成后才开始呈现页面内容(遇到body标签才呈现),对于那些需要很多js文件的页面来说,会有很大的延迟,浏览器页面空白时间,              所以尽量把全部js文件引用放在body标签内的最底部,先呈现内容,用户体验更好2.defer延迟脚本 script标签加上defer属性,浏览器会异步地下载该文件,不会影响后续dom的渲染,如果有多个def