沙盒iframe内的jQuery Mobile

时间:2012-11-17 00:58:59

标签: jquery mobile iframe sandbox

我想在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来显示内容。

1 个答案:

答案 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() );
    }
}