2016-04-06 1 views
0

ファーストはかなり厳しい制限があります。Mousemovement対インラインフレーム - または:親子の競合すべての私のプロジェクトの

  • オフライン可用性可能

=> PHPとして

  • ような単純なコーディングを他の言語はオプションではありません - htmlとjavascriptだけです。


    構造:

    • index.htmlを
    • frame.html

    のindex.htmlが含ま:

    • 秒imple IFRAME:

    < IFRAME幅= "100%" 高さ= "100%" SRC = "frame.html" FRAMEBORDER = "0">
    </iframe>の

      マウスの右クリックを無効にする
    • のJavaScript:

    <スクリプト言語= "javascriptの"> document.onmousedo wn = disableclick;
    status = "右クリック無効";関数disableclick(イベント){
    if(event.button == 2){
    alert( "TEST");
    falseを返します。 }}
    ユーザがアクティブでないときを検出するための< /スクリプト>

    • 別のJavaScript:

    <スクリプト>変数のtimeoutIDは。関数セットアップ(){
    this.addEventListener( "mousemove"、resetTimer、false);
    this.addEventListener( "mousedown"、resetTimer、false);
    this.addEventListener( "keypress"、resetTimer、false);
    this.addEventListener( "DOMMouseScroll"、resetTimer、false);
    this.addEventListener( "mousewheel"、resetTimer、false);
    this.addEventListener( "touchmove"、resetTimer、false);
    this.addEventListener( "MSPointerMove"、resetTimer、false);>
    startTimer(); } セットアップ(); function startTimer(){
    // goInactiveを呼び出す前にX秒待つ
    timeoutID = window。setTimeout(goInactive、3000); }関数resetTimer(e){
    window.clearTimeout(timeoutID);
    goActive(); }関数goInactive(){
    //何かを行う
    alert( "TIMEOUT");
    falseを返します。 } function goActive(){
    //何かを行う
    startTimer(); }
    CSSファイルはまた、マウスカーソルのいくつかの制限が含ま>

    • < /スクリプト:

    本体{
    背景色:#1 f0f0f0。
    カーソル:なし!重要;
    -webkit-user-select:none;
    -moz-user-select:none;
    -ms-user-select:none;ユーザー選択:なし;
    }

    =>これはindex.htmlのために非常によく動作します - ではなく、現時点では、同じディレクトリ内のローカルファイルであるIFRAME(のために、また、上でリンクすることができるはずウェブサイト)。

    は、私はいくつかの回避策を試してみましたが、(あなたもframe.htmlの内容を閲覧することができるように)生きiframe内のウェブサイトを維持しながら、それらのどれもを働きました。

    私は、スクリプトを子に渡した場合、または子が親またはオーバーレイソリューションからスクリプトを取得した場合、どのようなソリューションにも公開されています。 同じディレクトリにあるオフラインファイルのiframeリダイレクトを回避する方法がある場合は、最初の段階で問題ありません。

    ありがとうございます!


    EDIT:

    はまだこれで問題だ - それはネバーエンディングループに来る:私はjQueryを使ってこれを行っている

    $('iframe').load(function(){ 
        $(this).contents().find("body").mousemove(function(){ 
    var timeoutID; 
    function setup() { 
        this.addEventListener("mousemove", resetTimer, false); 
        this.addEventListener("mousedown", resetTimer, false); 
        this.addEventListener("keypress", resetTimer, false); 
        this.addEventListener("DOMMouseScroll", resetTimer, false); 
        this.addEventListener("mousewheel", resetTimer, false); 
        this.addEventListener("touchmove", resetTimer, false); 
        this.addEventListener("MSPointerMove", resetTimer, false); 
        startTimer(); 
    } 
    setup(); 
    
    function startTimer() { 
        timeoutID = (this).setTimeout(goInactive, 4000); 
    } 
    
    function resetTimer(e) { 
        (this).clearTimeout(timeoutID); 
        goActive(); 
    } 
    
    function goInactive() { 
        alert("TIMEOUT"); 
        return false; 
        goactive; 
    } 
    
    function goActive() {   
        startTimer(); 
    } 
        }); 
    }); 
    $('iframe').attr("src","JavaScript:'iframe content'"); 
    
  • +0

    あなたはいつもiframe内のページを制御できますか、または任意のページを埋め込むでしょうか? あなたが関心のあるイベントリスナーをフレームに配置する必要がありますが、その内容を制御できる場合にのみ行うことができます。 – kar288

    +0

    返信いただきありがとうございます。現時点では、iframeのページを完全に管理しています。しかし、将来の目的のために、外国のウェブサイト上のリンクも素晴らしいでしょう。 現在、タイムアウトはアラートにのみ関連付けられています。しかし、私は、ウェブサイトを(親サイトの)開始ページにジャンプさせたいと思っています。 frame.htmlにスクリプトを実装することで、これはどのように可能ですか? –

    +0

    もう一つの解決策はもちろんiframeを削除することですが、PHPが動作していないので、どのようにして...? –

    答えて

    1

    Link

    iframe.htmlがドメインにない場合、このクロスドメインを実行できないという問題があります。

    +0

    残念ながら、これは私にとってはうまくいきません...上記のJavaスクリプトをどのように統合するか教えてください。 => https://jsfiddle.net/khed9gx5/ –

    +0

    あなたはどんな問題がありますか?私はすべてがリンクに説明されていると思う。もちろん、jQuery.jsをindex.htmlに追加してjQueryを動作させる必要があります。しかし、あなたのドメインにないあなたのiFrameにコンテンツをロードしたいのであれば問題はあると言いました。 – Nalipu

    +0

    私の問題は、jQueryで2つのスクリプト(右クリックとタイマーを無効にする)を統合することです。私は専門家ではない - だから私はこのwebportalを使っている。 –

    関連する問題