我正在使用标签创建一个包含多个页面的 JQM 站点。例如 index.html#a 在其中一个页面上我需要初始化一个地图,比如 index.html#map。但是我突然想到,无论我将地图初始化脚本放在哪里,当 index.html 第一次加载时,脚本仍然会执行,我想避免这种情况。
虽然我可能会将地图脚本与一些按钮相关联,但我也希望能够在有人直接加载 index.html#map 时加载地图。
所以归结为如何将 JavaScript 与子页面(带有标签的页面)相关联?
我正在使用标签创建一个包含多个页面的 JQM 站点。例如 index.html#a 在其中一个页面上我需要初始化一个地图,比如 index.html#map。但是我突然想到,无论我将地图初始化脚本放在哪里,当 index.html 第一次加载时,脚本仍然会执行,我想避免这种情况。
虽然我可能会将地图脚本与一些按钮相关联,但我也希望能够在有人直接加载 index.html#map 时加载地图。
所以归结为如何将 JavaScript 与子页面(带有标签的页面)相关联?
我希望所有这些页面都是单个 HTML 文件的一部分。如果我是正确的,你不需要使用这个语法:
index.html#map
这个就足够了:
#map
假设这是您的 HTML:
<!DOCTYPE html>
<html>
<head>
<title>jQM Complex Demo</title>
<meta name="viewport" content="width=device-width"/>
<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/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
</head>
<body>
<div data-role="page" id="index">
<div data-theme="a" data-role="header">
<h3>
First Page
</h3>
<a href="#second" class="ui-btn-right">Next</a>
</div>
<div data-role="content">
</div>
<div data-theme="a" data-role="footer" data-position="fixed">
</div>
</div>
<div data-role="page" id="second">
<div data-theme="a" data-role="header">
<h3>
Second Page
</h3>
<a href="#index" class="ui-btn-left">Back</a>
</div>
<div data-role="content">
</div>
<div data-theme="a" data-role="footer" data-position="fixed">
</div>
</div>
</body>
</html>
然后将 javascript 关联到某个页面,请使用以下语法:
$(document).on('pagebeforeshow', '#index', function(){
alert('Index page');
});
$(document).on('pagebeforeshow', '#second', function(){
alert('Second page');
});
这是一个有效的 jsFiddle示例。
使用回调参数:
$(document).ready(function(){
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "http://maps.google.com/maps/api/js?v=3&sensor=true&callback=gmap_draw";
window.gmap_draw = function(){
alert ("Callback code here");
};
$("head").append(s);
});
确保回调是全局的。你可以在这里找到对应的线程:lazy load google maps api v3 jQuery callback