2011-06-18 21 views
0

素晴らしいJavaScriptウィザードの助けを借りて、ボタンをクリックするとHTML5ビデオのサイズを拡大し、ウィンドウのサイズを変更するたびに再実行するネイティブJavaScript関数があります。ページの読み込み時にネイティブJavaScript関数を実行

私は、ページのロード時にそれを起動する代わりに式からボタンを削除したいと思います。ウィンドウのサイズ変更トリガーを維持しながらクラス名の依存関係を削除してください。

ありがとうございました!あなたなしではできませんでした。 ...

var clicked = document.getElementById("buttonImportant") 

    var videoContainer = document.getElementById('video_container'); 
    var video = videoContainer.getElementsByTagName('video')[0]; 

    video.style.height="auto"; 
    video.style.width="1280px"; 

    clicked.addEventListener('click',function(){ 
    if(videoContainer.className.lastIndexOf("fullScreen")>=0){ 
     videoContainer.className="video-js-box"; 
     video.style.height = ""; 
     video.style.width=""; 
    } 
    else 
    { 
     videoContainer.className="video-js-box fullScreen"; 
     video.style.height = ""; 
     video.style.width=""; 
    } 
    myResizerObject.prevWidth = video.offsetWidth; 
    myResizerObject.prevHeight = video.offsetHeight; 



    myResizerObject.Init(); 
    },false); 

    var RESIZER = function(){ 

     this.prevWidth = video.offsetWidth; 
     this.prevHeight = video.offsetHeight; 

     this.videoContainer = document.getElementById('video_container'); 
     this.video = videoContainer.getElementsByTagName('video')[0]; 
     this.videoStyle = this.video.style; 

     var ratio = this.video.offsetHeight/this.video.offsetWidth; 

     var that = this; 

     this.Init = function(){ 
      if(that.videoContainer.className.lastIndexOf("fullScreen")>=0) 
      { 
       var videoContOffsetWidth = that.videoContainer.offsetWidth; 
       var videoOffsetWidth = that.video.offsetWidth; 
       var videoContOffsetHeight = that.videoContainer.offsetHeight; 
       var videoOffsetHeight = that.video.offsetHeight; 

       if(that.prevWidth!= videoContOffsetWidth) 
       { 
        that.prevWidth = videoContOffsetWidth; 
        var desired = videoContainer.offsetHeight/videoContainer.offsetWidth; 
        if(desired>ratio){ 
         that.videoStyle.width=videoContOffsetWidth*desired+videoContOffsetWidth*desired+"px"; 
         that.videoStyle.left = -1*(videoOffsetWidth-videoContOffsetWidth)/2+'px'; 
        } 
        else{ 
        that.videoStyle.cssText="height:auto;width:100%;left:0px;top:0px;"; 
        } 
       } 

       if(that.prevHeight!=videoContOffsetHeight) 
       { 
        that.prevHeight = videoContOffsetHeight; 
        var desired = videoContOffsetHeight/videoContOffsetWidth; 
        if(desired>ratio){ console.log(ratio); 
         that.videoStyle.top = '0px'; 
         that.videoStyle.left = -1*(videoOffsetWidth-videoContOffsetWidth)/2+'px'; 
         that.videoStyle.width = videoContOffsetHeight*desired+videoContOffsetHeight/desired+'px'; 
        } 
        else 
        { 
         that.videoStyle.top = -1*(videoOffsetHeight-videoContOffsetHeight)/2+'px'; 

        } 
       } 

      } 
     }; 
    }; 

    var myResizerObject = new RESIZER(); 
    window.onresize = myResizerObject.Init; 

答えて

1

はあなたのような何かを探してい

window.onload = mySuperCoolFunction; 

をそして、なぜあなたはjQueryのが必要なのです:デモはhttp://kzmnt.com/test/

のJavaScriptで見ることができますか?私たちはあなたを助けることができるようにたぶん、あなたは明示的に太字の一番下にあなたの目標/質問を述べることができ:)


をあなただけの別の機能を初期化するために探しているなら、なぜちょうどあなたのsuperCoolFunctionの中に呼び出しを追加しません他の事前に書かれたjQuery関数を呼び出しています。 jQueryので書き直さ

$(document).ready(function() { 
    center(); 
    mySuperCoolFunction(); // not necessary to init in another file... 
}); 
$(window).load(function(){ 
    center(); 
    mySuperCoolFunction(); 
}); 
$(window).resize(function(){ 
    center(); 
    mySuperCoolFunction(); 
}); 

:たとえば

$(function() { 
$('video').eq(0).css({ 
    height: "auto", 
    width: "1280px" 
}); 

if ($('#video_container').hasClass('fullScreen')) { 
    $('#video_container').attr('class', 'video-js-box'); 
    $('video').eq(0).css({ 
     height: "auto", 
     width: "1280px" 
    }); 
} 
else { 

    $('#video_container').attr('class', 'video-js-box fullscreen'); 
    $('video').eq(0).css({ 
     height: "auto", 
     width: "1280px" 
    }); 
} 

myResizerObject.prevWidth = video.offsetWidth; 
myResizerObject.prevHeight = video.offsetHeight; 
myResizerObject.Init(); 
}); 
+0

ハハ...良い点!私は投稿を編集し、目標を大胆にします。私はwindow.onresizeと組み合わせて、私が探しているwindow.onloadだと思います。 実際にjQueryが必要かどうかはわかりませんが、実際にはわかりません。最終的にこれはリンクされた.jsファイルにあり、前述したように、既にjQueryで書かれた別の関数と組み合わせられます。何がお勧めですか? – technopeasant

+0

私はコードがうまくフォーマットされるように私の答えにもっと多くを加えました;) – AndyL

+0

ありがとうAndy!私はjQuery関数の呼び出しでそれを起動することができ、成功しなかったのです。私の推測では、ボタンを起動することは、クラスを関与させ、関数の残りの部分を "this"と解釈するので、難しくなっています。それは完全に不要で、かなりイライラしています。私はそれをより簡潔にするために私の質問を編集しました。 – technopeasant

関連する問題