将外部脚本中的javascript插入HTML中的javascript

时间:2012-10-10 18:34:18

标签: javascript jquery html insert external

我有一些来自外部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>

谢谢!

6 个答案:

答案 0 :(得分:1)

过去对我来说最简单的方法就是使用服务器端包含。根据您的后端,您可以设置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";
.......

答案 1 :(得分:1)

在JavaScript中,您可以随时使用新值覆盖变量,包括函数。

从外观上看,您可以将mediaTypeCheck函数替换为您自己的函数,然后调用原始函数。

E.g。

(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函数后发生。

答案 2 :(得分:0)

你不能在JS中插入JS。您可以做的是在DOM中插入另一个标记,并为外部JS文件指定SRC。

答案 3 :(得分:0)

您可以使用$.getScript(url);

直接插入js文件

如果你有脚本作为文本,那么你可以创建脚本标记。

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

答案 4 :(得分:0)

你的案例中的问题是你无法触及html中的脚本,所以我会说它不能在客户端完成。

如果您至少可以触摸脚本标记(而不是脚本本身),那么您可以添加自定义类型以在其执行之前对其进行操作,例如:

<script type="WaitForInsert">

答案 5 :(得分:0)

你的问题看起来很奇怪,但似乎有可能。尝试我的快速/脏工作代码并实现您自己的情况:

$(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');
}