簡體   English   中英

將外部腳本中的javascript插入HTML中的javascript

[英]Insert javascript from an external script into javascript in the HTML

我有一些來自外部JS文件的JS,我希望在HTML文件的JS函數中插入。 我無法觸摸HTML文件中的JS腳本,所以我想知道這個方法是否可以完成。

這是我想在HTML文件中插入JS函數的JS。

// FIRST JS TO INSERT
if (OS == "mobile"){
        killVideoPlayer();
    }

// SECOND JS TO INSERT
if (OS == "mobile"){ 
        loadHtmlFiveVideo();
        if (!document.all){
            flvPlayerLoaded = false;
        }
    }else {
        loadVideoPlayer();
    }

然后我想把它插入到這里。

<script>
function mediaTypeCheck() {
if (bsiCompleteArray[arrayIndex].mediaType == "video") {
// INSERT FIRST JS HERE
    document.getElementById("bsi-video-wrap").style.display = "block";
    document.getElementById('pngBsi').style.display = "block";
    document.getElementById("frame_photo").style.display = "none";
    document.getElementById("relativeFrame").style.display = "block";
    document.getElementById("buy-me-photo-button-bsi").style.display = "none";
// INSTER SECOND JS HERE    
    loadVideoPlayer();
} 
if (bsiCompleteArray[arrayIndex].mediaType == "photo") {
    killVideoPlayer();
    document.getElementById("bsi-video-wrap").style.display = "none";
    document.getElementById('pngBsi').style.display = "block";
    document.getElementById("relativeFrame").style.display = "block";
    document.getElementById("frame_photo").style.display = "block";
    document.getElementById("buy-me-photo-button-bsi").style.display = "block";
    if (!document.all){
        flvPlayerLoaded = false;
    }   
}   
}
</script>

謝謝!

對我來說最簡單的方法是使用服務器端包含。 根據您的后端,您可以設置PHP或ASP頁面或其他任何響應模仿“.js”的mime類型。

我不是一個PHP人,但你會做這樣的事情:(如果我的語法不正確,請其他人修復它)

<?php 
//adding this header will make your browser think that this is a real .js page
header( 'Content-Type: application/javascript' );
?>

//your normal javascript here
<script>
function mediaTypeCheck() {
if (bsiCompleteArray[arrayIndex].mediaType == "video") {

//here is where you would 'include' your first javascript page
<?php 
      require_once(dirname(__FILE__) . "/file.php");
?>

//now continue on with your normal javascript code
document.getElementById("bsi-video-wrap").style.display = "block";
document.getElementById('pngBsi').style.display = "block";
.......

在JavaScript中,您可以隨時使用新值覆蓋變量,包括函數。

通過它的外觀,您可以用您自己的一個替換mediaTypeCheck函數,然后調用原始函數。

例如

(function(){
  // keep track of the original mediaTypeCheck 
  var old_function = mediaTypeCheck;
  // overwrite mediaTypeCheck with your wrapper function
  mediaTypeCheck = function() {
    if ( conditions ) {
      // do whatever you need to, then ...
    }
    return old_function();
  };
})();

只要在定義了mediaTypeCheck函數后發生,就可以從任何腳本加載上述內容。

你不能在JS中插入JS。 可以做的是在DOM中插入另一個標簽,並為外部JS文件指定SRC。

您可以使用$.getScript(url)直接插入js文件;

如果您將腳本作為文本,那么您可以創建腳本標記。

var script = docuent.createElement('script');
script.innerText = text;
document.getElementsByTagName('head')[0].appendChild(script);

在你的情況下的問題是你不能觸摸HTML中的腳本,所以我會說它不能在客戶端完成。

如果您至少可以觸摸腳本標記(而不是腳本本身),那么您可以添加自定義類型以在其執行之前對其進行操作,例如:

<script type="WaitForInsert">

你的問題看起來很奇怪,但似乎有可能。 嘗試我的快速/臟工作代碼並實現您自己的情況:

$(document.body).ready(function loadBody(){
var testStr = test.toString();
    var indexAcc = testStr.indexOf("{");
    var part1 = testStr.substr(0, indexAcc + 1);
    var part2 = testStr.substr(indexAcc + 1, testStr.length - indexAcc - 2);
    var split = part2.split(";");
    split.pop();
    split.splice(0,0, "alert('a')");
    split.splice(split.length -1, 0, "alert('d')");
    var newStr = part1 + split.join(";") + ";" + "}";
    $.globalEval(newStr);
    test();
}
function test(){
    alert('b');
    alert('c');
    alert('e');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM