我想在iframe中运行jquery移动网站,这个网站是沙箱但是带有allow-scripts。但它什么都不会显示出来。
<!Doctype html>
<html>
<head>
<title>#1 JS Scope</title>
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
<!-- Libs -->
<script src="../../lib/jquery-1.8.2/jquery-1.8.2.js"></script>
<script src="../../lib/jquery-mobile-1.2.0/jquery.mobile-1.2.0.js"></script>
<link href="../../lib/jquery-mobile-1.2.0/jquery.mobile.structure-1.2.0.css" rel="stylesheet">
<link href="../../lib/jquery-mobile-1.2.0/jquery.mobile-1.2.0.css" rel="stylesheet">
</head>
<body>
<!-- Page -->
<div data-role="page" id="home">
<!-- Header -->
<div data-role="header" data-theme="a">
<h1>Top</h1>
</div>
<!-- Content -->
<div data-role="content" data-theme="c" id="frame">
<iframe src="http://jquerymobile.com/demos/1.2.0/" sandbox="allow-scripts" width="926" height="974"></iframe>
</div>
</div>
</body>
</html>
它是沙箱,因为我想阻止已完成的jquery移动应用程序访问包装页面的DOM。因此,只允许allow-script设置为允许运行jquery mobile的javascript。
但是iframe只显示白色,我真的不知道出了什么问题。因为jquery不需要访问父DOM来显示内容。
答案 0 :(得分:0)
jQuery Mobile试图操纵浏览器历史记录(history.replaceState),沙盒时不允许这样做
init: function() {
$win.bind( "hashchange", self.onHashChange );
// Handle popstate events the occur through history changes
$win.bind( "popstate", self.onPopState );
// if there's no hash, we need to replacestate for returning to home
if ( location.hash === "" ) {
history.replaceState( self.state(), document.title, $.mobile.path.getLocation() );
}
}