Javascript 使用jquerymobile,onload函数不会在HTML中启动

Javascript 使用jquerymobile,onload函数不会在HTML中启动,javascript,jquery,html,jquery-mobile,Javascript,Jquery,Html,Jquery Mobile,我有一个index.html文件,具有以下语法 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery

我有一个
index.html
文件,具有以下语法

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
</head>
<body>
<a href="occassion.html">
  <img class="frametoicon" src="img/occasion.png" />
</a>
</body>
</html>
但是
onload
函数没有启动…如果我尝试刷新页面(
occasion.html
),则
onload
函数启动。。。为什么从
index.html
导航时它不工作

如果我删除了jQuery文件,那么它就会按预期工作……我缺少什么来添加

这也不起作用

 $(document).ready(function () {
        loaded();
    });
编辑

我补充说

 <script>
    $(document).bind("pagechange", function (event, data) {
        console.log(data);
        var toPage = data.toPage[0].id;
        alert(toPage);
        if (toPage == "page2")
            alert("hello");
    });
</script>

$(文档).bind(“页面更改”,函数(事件,数据){
控制台日志(数据);
var toPage=data.toPage[0].id;
警惕(toPage);
如果(toPage==“第2页”)
警惕(“你好”);
});
并将以下内容放入occasion.html中

<div data-role="page" id="page2">
 hello
 </div>

你好
令我惊讶的是,甚至警报(hello)都没有触发,而且hello也没有显示,警报(topage)是空的

怎么样?缺少什么

编辑 事实上,由于您使用jquery mobile,可能您正在另一个地方寻找问题


所以,让我们来看一下,我们需要
pagechange
pageload
事件。

jquerymobile使用AJAX将页面拉入DOM,这就是它可以在页面之间转换的方式。当jQuery Mobile执行此操作时,它很有可能在
窗口.load
事件触发后执行此操作,因此除非刷新页面,否则该事件通常不会触发(然后
窗口.load
将再次触发)。似乎用户可以单击链接并在
窗口之前加载它。加载
事件触发之前加载它,但我不认为这是正常现象

修复方法是使用jQuery Mobile特定事件,在这种情况下,您可能正在查找
pageload
/
pagecreate
/
pageinit
,请参阅此处的相关文档:

下面是如何工作的一个快速示例(此代码将位于中心位置并包含在每个文档中):


请注意,
#events
将是events页面中的
数据角色=“page”
元素。

为什么要使用
onLoad
而不是
$(document)。ready
?不是答案,但正确的拼写是evence…您使用的是jQuery-不要使用
onLoad
,而是依赖于
$(函数(){..})
block在您的脚本中。如果您在使用jQuery时仍在使用内联JavaScript,您真的需要重新考虑您的整个方法。@crush,user1853803在其OP中也指出,“如果我删除jQuery文件,那么它将按预期工作”,因此,我上面的评论提醒大家,这个答案是可行的,但它需要jQuery。@Sparky
文档。ready
建议将不适用于通过AJAX的jQuery Mobile grabs页面,这是默认方法。通过删除jQuery,您没有使用jQuery Mobile,只是正常打开链接,而不是在加载jQuery/jQM时使用AJAX。@Jasper,是的,谢谢。。。我已经明白了。我最初的评论是因为OP从未提到jQuery Mobile。是的,我知道,我错过了他的密码。我现在编辑了他的标题以使其更加清晰。$(document).bind(“pagechange”,function(event,data){var-toPage=data.toPage[0].id;if(toPage==“page2”)alert(“hello”);};
<div data-role="page" id="page2">
 hello
 </div>
$(document).on("pageinit", "#occasions", loaded);