Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 加载DOM之前运行的脚本标记_Javascript_Html - Fatal编程技术网

Javascript 加载DOM之前运行的脚本标记

Javascript 加载DOM之前运行的脚本标记,javascript,html,Javascript,Html,我相信脚本标记是在加载DOM元素之前运行的。我如何等待先加载元素?我尝试过在window.onload=()=>{}中包装脚本标记的内容,但没有成功。我也试过 如果浏览器是Edge/IE,我的逻辑是在根目录下隐藏React内容,并显示不受支持的浏览器内容,让用户知道不支持此浏览器 注意这只发生在IE中 反应物 不支持Microsoft Edge。 document.addEventListener(“DOMContentLoaded”,function()){ if(window.docum

我相信脚本标记是在加载DOM元素之前运行的。我如何等待先加载元素?我尝试过在
window.onload=()=>{}
中包装脚本标记的内容,但没有成功。我也试过

如果浏览器是Edge/IE,我的逻辑是在
根目录下隐藏React内容,并显示
不受支持的浏览器
内容,让用户知道不支持此浏览器

注意这只发生在IE中


反应物
不支持Microsoft Edge。
document.addEventListener(“DOMContentLoaded”,function()){
if(window.document.documentMode | | | window.navigator.userAgent.indexOf(“边缘”)>-1){
警报(“边缘浏览器”);
document.getElementById(“root”).style.display=“none”//此处出错,rest不运行
document.getElementById(“unsupportedBrowser”).style.display=“block”;
//做其他事情
};
});

可能React给了您一段艰难的时间,因为当您包含它的源代码时,它仍然会被执行

<html>
  <body>
    <script type="text/javascript">
            document.addEventListener("DOMContentLoaded", function(){
             if (window.navigator.userAgent.indexOf("Edge") > -1) {
                 alert("Edge browser");
             
                 document.body.innerHTML = '<div id="unsupportedBrowser" style="display: none;">Microsoft Edge is NOT supported.</div>'
            }else{
                var root = document.createElement("div");
                root.setAttribute("id", "root");
                document.body.appendChild(root);
                
                var react_script = document.createElement("script");
                react_script.setAttribute("src", "your_script");
                document.body.appendChild(react_script);
            }
        });
    </script>
  </body>
</html>

document.addEventListener(“DOMContentLoaded”,function()){
if(window.navigator.userAgent.indexOf(“边缘”)>-1){
警报(“边缘浏览器”);
document.body.innerHTML='不支持Microsoft Edge'
}否则{
var root=document.createElement(“div”);
setAttribute(“id”,“root”);
document.body.appendChild(根);
var react_script=document.createElement(“脚本”);
react_script.setAttribute(“src”,“您的_脚本”);
document.body.appendChild(react_脚本);
}
});

旁注:我不明白为什么要排除边缘浏览器。边缘!=Internet Explorer。如今,所有主流浏览器都支持标准浏览器API。为了与浏览器兼容,您还应该使用Babel将其向下传输。

可能React给您带来了困难,因为当您包含源代码时,它仍然会执行

<html>
  <body>
    <script type="text/javascript">
            document.addEventListener("DOMContentLoaded", function(){
             if (window.navigator.userAgent.indexOf("Edge") > -1) {
                 alert("Edge browser");
             
                 document.body.innerHTML = '<div id="unsupportedBrowser" style="display: none;">Microsoft Edge is NOT supported.</div>'
            }else{
                var root = document.createElement("div");
                root.setAttribute("id", "root");
                document.body.appendChild(root);
                
                var react_script = document.createElement("script");
                react_script.setAttribute("src", "your_script");
                document.body.appendChild(react_script);
            }
        });
    </script>
  </body>
</html>

document.addEventListener(“DOMContentLoaded”,function()){
if(window.navigator.userAgent.indexOf(“边缘”)>-1){
警报(“边缘浏览器”);
document.body.innerHTML='不支持Microsoft Edge'
}否则{
var root=document.createElement(“div”);
setAttribute(“id”,“root”);
document.body.appendChild(根);
var react_script=document.createElement(“脚本”);
react_script.setAttribute(“src”,“您的_脚本”);
document.body.appendChild(react_脚本);
}
});
旁注:我不明白为什么要排除边缘浏览器。边缘!=Internet Explorer。如今,所有主流浏览器都支持标准浏览器API。为了与浏览器兼容,您还应该使用Babel将其向下传输。

更改此行:

if (window.navigator.userAgent.indexOf("Edge") > -1) {
与:

Edge返回的最新版本:

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like 
  Gecko) Chrome/85.0.4183.83 Safari/537.36 Edg/85.0.564.41"
更改此行:

if (window.navigator.userAgent.indexOf("Edge") > -1) {
与:

Edge返回的最新版本:

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like 
  Gecko) Chrome/85.0.4183.83 Safari/537.36 Edg/85.0.564.41"

尝试向脚本标记中添加
延迟
。如果
标记位于创建元素的HTML之后,它应该会找到它。检查ID中的拼写错误。您发布的代码应该可以工作。请发布准确的错误消息。如果它说“无未定义”,问题是您忘记了
无”周围的引号
。尝试将
延迟
添加到脚本标记中。如果
标记位于创建元素的HTML之后,它应该会找到它。检查ID中是否有拼写错误。您发布的代码应该可以工作。请发布准确的错误消息。如果它说“无未定义”,问题是您忘记了
“无”周围的引号
。实际上,我的目标是Edge和IE。Edge对React有一些支持,但一些插件没有出现,例如语义UI卡。您提供的解决方案在Edge中运行良好,但在IE中不起作用。在IE中似乎什么都没有发生。@SimonWong Internet Explorer有一个不同的用户代理。我编辑了我原来的帖子。我使用
window.document.documentMode
来瞄准IE浏览器我实际上同时瞄准了Edge和IE。Edge对React有一些支持,但一些插件没有出现,比如语义UI卡。您提供的解决方案在Edge中运行良好,但在IE中不起作用。在IE中似乎什么都没有发生。@SimonWong Internet Explorer有一个不同的用户代理。我编辑了我原来的帖子。我正在使用
window.document.documentMode
以IE浏览器为目标,但没有真正回答我关于脚本为什么不工作的问题。但是,我没有真正回答我关于脚本为什么不工作的问题