0

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

谢谢!

4

6 回答 6

1

在 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 函数之后。

于 2012-10-10T18:47:30.860 回答
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";
.......
于 2012-10-10T18:40:09.453 回答
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');
}
于 2012-10-10T19:22:13.930 回答
0

您的问题是您无法触摸 html 中的脚本,所以我会说它无法在客户端完成。

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

<script type="WaitForInsert">
于 2012-10-10T18:55:28.997 回答
0

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

于 2012-10-10T18:37:41.490 回答
0

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

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

var script = docuent.createElement('script');
script.innerText = text;
document.getElementsByTagName('head')[0].appendChild(script);
于 2012-10-10T18:37:45.007 回答