2017-04-18 4 views
0

Ich möchte externe Javascript-Dateien für bestimmte Seiten in meiner Phonegap-App hinzufügen. Die App verwendet Framework7 für die Benutzeroberfläche.Phonegap und Framework7, fügen externe JavaScript-Dateien für bestimmte Seiten hinzu

Beispiel:
Übung Seite 2.1 hat JavaScript-Datei exercise2_1.js.
Übung Seite 2.9 hat JavaScript-Datei exercise2_9.js ect.
Ich möchte nur die JavaScript-Dateien laden, wenn der Benutzer auf dieser bestimmten Seite ist.

Die JavaScript-Dateien funktionieren, wenn sie im Headerbereich der Indexseite enthalten sind. Ich möchte nicht alle JavaScript-Übungsdateien laden. Ich möchte nur laden, dass jemand benutzt wird. Ist es möglich, dies zu tun, ohne alle js-Dateien zu laden?

Im Abschnitt my-app habe ich versucht, die Dateien als externe js-Datei zu laden. Aber ich konnte es nicht zur Arbeit bringen. Nichts passiert.

Index Seite

<html> 

<title>My App</title> 
<link rel="stylesheet" href="lib/framework7/css/framework7.ios.min.css"> 
<link rel="stylesheet" href="lib/framework7/css/framework7.ios.colors.min.css"> 
<link rel="stylesheet" href="css/styles.css"> 
<link rel="stylesheet" type="text/css" href="css/exercise.css" /> 

<div class="statusbar-overlay"></div> 
<div class="panel-overlay"></div> 
<div class="panel panel-left panel-reveal"> 
    <div class="list-block accordion-list"> 
     <ul> 
     <li class="accordion-item"><a href="#" class="item-content item-link"> 
      <div class="item-inner"> 
       <div class="item-title">2</div> 
      </div></a> 
      <div class="accordion-item-content"> 
       <div class="list-block"> 
        <ul> 
        <li class="item-content"> 
         <div class="item-inner"> 
         <a href="exercise2_1.html" class="close-panel" ><div class="item-title">Exercise 2</div></a> 
         </div> 
        </li> 
        </ul> 
       </div> 
      </div> 
     </li> 
     </ul> 
    </div> 
</div> 
<div class="views"> 
    <div class="view view-main"> 
     <!-- Top Navbar--> 
     <div class="navbar"> 
      <div class="navbar-inner"> 
       <!-- We need cool sliding animation on title element, so we have additional "sliding" class --> 
       <div class="center sliding">Awesome App</div> 
       <div class="right"> 
        <a href="#" class="link icon-only open-panel"><i class="icon icon-bars"></i></a> 
       </div> 
      </div> 
     </div> 
     <div class="pages navbar-through toolbar-through"> 
      <div data-page="index" class="page"> 
       <div class="page-content"> 
        <div class="content-block"> 
         <p>Page content goes here</p> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 
<script type="text/javascript" src="cordova.js"></script> 
<script type="text/javascript" src="lib/framework7/js/framework7.min.js"></script> 
<script type="text/javascript" src="js/my-app.js"></script> 
<script type="text/javascript" src="js/nav.js"></script> 

my_app.js Seite

var myApp = new Framework7(); 
var $$ = Dom7; 
var mainView = myApp.addView('.view-main', { 
dynamicNavbar: true 
}); 

$$(document).on('deviceready', function() { 
console.log("Device is ready!"); 
}); 

myApp.onPageInit('exercise2_1', function (page) { 

}) 

$$(document).on('pageInit', function (e) { 
    var page = e.detail.page; 

if (page.name === 'exercise2_1') { 

} 
}); 

$$(document).on('pageInit', '.page[data-page="exercise2_1"]', function (e) { 
    myApp.alert('Test'); 
     function includeJs(jsFilePath) { 
     var js = document.createElement("script"); 
     js.type = "text/javascript"; 
     js.src = jsFilePath; 
     //document.body.appendChild(js); 
     document.getElementsByTagName("head")[0].appendChild(js); 
    } 
includeJs("js/exercise2_1.js"); 
}) 

Aufgabe 2.1 Seite (exercise2_1.html)

<div class="navbar"> 
<div class="navbar-inner"> 
    <div class="left"> 
     <a href="#" class="back link"> 
      <i class="icon icon-back"></i> 
      <span>Back</span> 
     </a> 
    </div> 
    <div class="center sliding">Exercise 2.1</div> 
    <div class="right"> 
     <a href="#" class="link icon-only open-panel"><i class="icon icon-bars"></i></a> 
    </div> 
</div> 
</div> 
<div class="pages"> 
    <div data-page="exercise2_1" class="page">  
    <form id="Cloze" method="post" action="" onsubmit="return false;"> 
    <div class="ClozeBody"> 
    Use verbs from the Alex-text.<br><br>Example: Alex er våken og TENKER.<br><br>Pappa <span class="GapSpan" id="GapSpan0"> 
<input type="text" id="Gap0" onfocus="TrackFocus(0)" onblur="LeaveGap()" class="GapBox" size="6"></span> på et kontor. <br>Han <span class="GapSpan" id="GapSpan1"><input type="text" id="Gap1" onfocus="TrackFocus(1)" onblur="LeaveGap()" class="GapBox" size="6"> 
</span> ingeniør. 
</div> 
</form> 
    <button id="CheckButton2" class="FuncButton" onmouseover="FuncBtnOver(this)" onfocus="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onblur="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="CheckAnswers()">&nbsp;Check&nbsp;</button> 
<button class="FuncButton" onmouseover="FuncBtnOver(this)" onfocus="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onblur="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="ShowHint()">&nbsp;Hint&nbsp;</button> 
    <div class="Feedback" id="FeedbackDiv"> 
    <div class="FeedbackText" id="FeedbackContent"></div> 
    <button id="FeedbackOKButton" class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="HideFeedback(); return false;">&nbsp;OK&nbsp;</button> 
    </div> 
    </div> 
</div> 

Antwort

0

I a Dies wurde durch Hinzufügen von JQuery und durch folgende Schritte erreicht:

$$(document).on('pageInit', function (e) { 
    var page = e.detail.page; 

    if (page.name == 'page1') { 
     $.getScript("js/page1.js"); 
    } else if (page.name == 'page2') { 
     $.getScript("js/page2.js"); 
    } 
}); 
0

Ich habe das Problem gefunden. Es hatte mit dem Onload-Ereignis auf der Indexseite zu tun. Ich habe das Onload-Ereignis von der Indexseite entfernt und auf die Übungsseite gelegt.

Das löste mein Problem.

<iframe style="display:none" onload="StartUp()" id="TheBody" src="js/exercise2_1.js"></iframe> 

Hofft, dass dies jemand anderen hilft.

Verwandte Themen