2012-11-17 2 views
2

Я хочу запустить jQuery мобильных сайтов внутри iframe, который изолирован, но с разрешения-скриптов. Но он ничего не покажет.jQuery Мобильный внутри изолированного iframe

<!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, позволяющий запускать javascript jQuery mobile.

Но iframe показывает только белый цвет, и я действительно не знаю, что может быть неправильным. Поскольку jquery не должен иметь доступ к родительскому DOM, чтобы показать что-то.

ответ

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()); 
    } 
} 
Смежные вопросы