2017-05-02 45 views
0

我正在调用body的onload事件上的函数load()。有时候这个功能有效,有时候不会。根据我的理解,直到主体完全加载后,这个函数才会被调用。有什么办法可以在页面加载之前调用这个函数吗?在页面加载之前调用javascript函数

这里是home.html的:

<script src="js/custom.js"></script> 
<script src="js/props.json"></script> 
<body onload="load()"> 

<a id="beginner">Beginner Level</a> 
     <div id="beginner-sub" class="well"> 
      <!-- append content here --> 
     </div> 

</body> 

custom.js负载功能:

function load() { 
    var mydata = JSON.parse(beginner); 
    var rows = ""; 
    for(var x=0; x < mydata.length; x++) 
    { 
    rows += '<a href="'+mydata[x].url+'">'+mydata[x].title+'<i class="fa fa-hand-o-right pull-left" aria-hidden="true"></i></a><hr>'; 
    } 
    $("#beginner-sub").append(rows); 
    $("#beginner-sub hr:last-child").remove() 
} 

这是我props.js

beginner = '[{"title" : "Simple Program", "url" : "simple.html"}, {"title" : "Check Palindrome", "url" : "palindrome.html"}]'; 
+0

没有,但你可以将身体后,立即添加脚本标签。 – LGSon

+0

我的回答中是否有某些东西缺失并且您接受? – LGSon

回答

2

不,不能(或不应该)强制body onload事件触发,但您可以在有问题的元素之后立即添加脚本标记。

<a id="beginner">Beginner Level</a> 
<div id="beginner-sub" class="well"> 
    <!-- append content here --> 
</div> 
<script>load();</script> 

做不过请注意,任何其他功能load()取决于必须已经装载,否则它将无法

2

如果您将代码中发现,当它被立即执行的脚本标签中:

<head> 
... 
<script type="text/javascript"> 
    alert("executed now"); 
</script> 
</head> 

这是回答你关于页面加载前执行代码的问题。 但是,如果您访问某个元素,则必须确保在加载该元素后执行此代码。

p.s.你也可以拆分代码,在页面加载之前解析JSON,将结果保存在变量中,然后在页面加载后追加元素。

+0

是的,虽然作为脚本访问元素,但它会失败,因为它们尚未加载 – LGSon

+0

您可以拆分代码,在加载页面之前解析JSON,将结果保存在变量中,然后在页面添加后添加元素加载。 它可以解决这个问题 – quirimmo

相关问题