0

HTMLファイルのJS関数内に挿入したい外部JSファイルからの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

これまでの私にとって最も簡単な方法は、サーバーサイドインクルードを使用することでした。バックエンドに応じて、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 に答える
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 に答える
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 に答える
0

あなたの場合の問題は、htmlのスクリプトに触れることができないということです。したがって、クライアント側ではそれを行うことができないと言います。

少なくともスクリプトタグ(スクリプト自体ではなく)に触れることができる場合は、実行前にカスタムタイプを追加して操作することができます。次に例を示します。

<script type="WaitForInsert">
于 2012-10-10T18:55:28.997 に答える
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 に答える