JS没有运行第一次加载HTML页面

时间:2014-08-14 06:28:03

标签: javascript jquery html webpage

第一次加载HTML页面时,javascript函数不会运行。但是,如果我进行页面刷新,脚本运行就可以了。

说明

我的索引页面有一个指向showdata HTML页面的按钮。 问题是,当我单击索引页面中的按钮时,我可以看到(在URL中)加载了showdata.html页面但JS代码没有运行(因为我看不到任何警报)。

但是,如果我刷页面或手动点击URL,JS运行正常,我可以看到警告声明。

在Chrome和Firefox上尝试了这一点,并在两个地方都获得了相同的结果。

如果我没错,$(function()是$(document).ready的简写。无论如何,我尝试使用这两种语法,但结果是相同的。

该页面的当前代码是:

<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Test</title>
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.3/jquery.mobile-1.4.3.min.js"></script>

<script type="text/javascript"> 
    $(function() { alert("hello"); });
</script>
</head>
  <body></body>
</html>

首次加载页面时,我无法看到预期的提示框。当我重新加载页面时,警报按预期进行。

更新:

我清除了缓存但没有结果。

此外,当我删除

<script src="http://code.jquery.com/mobile/1.4.3/jquery.mobile-1.4.3.min.js"></script>
来自索引页面

标记,其中存在指向当前页面的链接,JS在showdata.html页面的第一次加载时正确触发。但是,这会导致索引页面中的样式丢失。

1 个答案:

答案 0 :(得分:2)

在.get中,确保指定数据类型。通过添加&#34;刷新&#34;到.done,它告诉AJAX要等到成功调用重新加载表后,我相信它会起作用。您可以尝试的另一件事是将</table>放在正文中,以便始终首先加载HTML表。

<script type="text/javascript">
$(function() {
    jQuery.get('filename.txt', function(data) {
    var lines = data.split("\n");  
    var newrow = "";
    for (var i = 0, len = lines.length; i < (len-1); i=i+2) {
        newrow = "<tr><td>"+lines[i]+"</td>"+"<td>"+lines[i+1]+"</td></tr>";   
        $('#tableoverview').find('tbody:last').append(newrow);
        }
    },'text').done(function() {
                $("#tableoverview").table("refresh");
            });
}); 
</script>

你也可以试试$(document.body).ready,直到身体加载后才能执行。{/ p>

<script type="text/javascript">
$(document.body).ready(
    $(function() {
        jQuery.get('filename.txt', function(data) {
        var lines = data.split("\n");  
        var newrow = "";
        for (var i = 0, len = lines.length; i < (len-1); i=i+2) {
            newrow = "<tr><td>"+lines[i]+"</td>"+"<td>"+lines[i+1]+"</td></tr>";   
            $('#tableoverview').find('tbody:last').append(newrow);
            }
        $("#tableoverview").table("refresh");
        });
    });
);
</script>

编辑:

我对此进行了一些研究,您似乎正在使用表格小部件和重排表小部件.table("refresh");的混合。
您是否尝试将其删除并使用.table("reflow");<table data-role="table" id="tableoverview" data-mode="reflow" class="ui-responsive table-stroke">代替?