2016-04-06 74 views
0

İlk:Iframe Mousemovement vs - ya: ebeveyn-çocuk çatışması tüm proje vardır oldukça sert kısıtlamaların

  • çevrimdışı kullanılabilirlik mümkün

=> PHP gibi

  • kadar basit kodlama ve diğer diller bir seçenek değildir - sadece html ve javascript.


    Yapısı:

    • index.html
    • frame.html

    index.html içerir:

    • bir s uygu iframe:

    < iframe genişliği = "% 100" yükseklik = "% 100" src = "frame.html" frameborder = "0">
    </iframe>

      devre dışı bırakılması sağ fare tıklaması için
    • JavaScript: = "javascript"

    < komut dili> document.onmousedo wn = disableclick;
    status = "Sağ Tıklama Devre Dışı"; işlevi devre dışı bırakma (olay) {
    if (event.button == 2) {
    uyarısı ("TEST");
    false; }}
    </komut>

    • başka JavaScript kullanıcı aktif değilken tespit edilmesi için:

    < script> var timeoutID; işlev ayarı() {
    this.addEventListener ("mousemove", resetTimer, false);
    this.addEventListener ("mousedown", resetTimer, false);
    this.addEventListener ("tuşa basma", resetTimer, false);
    this.addEventListener ("DOMMouseScroll", resetTimer, false);
    this.addEventListener ("mousewheel", resetTimer, false);
    this.addEventListener ("touchmove", resetTimer, false);
    this.addEventListener ("MSPointerMove", resetTimer, false);>
    startTimer(); } kurmak(); işlev startTimer() {
    // golnaktif
    timeoutID = window çağırmadan önce X saniye bekleyin.setTimeout (goInactive, 3000); işlev resetTimer (e) {
    window.clearTimeout (timeoutID);
    goActive(); } işlev goInactive() {
    // bir şey yap
    alert ("TIMEOUT");
    false; } işlev goActive() {
    // bir şey yap
    startTimer(); }
    css dosyası da fare imleci için bazı kısıtlamalar içeriyor>

    • </script:

    vücut {
    background-color: # f0f0f0;
    imleç: none! Önemli;
    -webkit-user-select: yok;
    -moz-user-select: yok;
    -ms-user-select: none; kullanıcı seç: yok;
    }

    => Bu index.html için oldukça iyi çalışıyor - ama şu anda değil aynı dizinde yerel bir dosya olduğu iframe (için, ama aynı zamanda bir bağlantısını mümkün olmalıdır Web sitesi).

    Birkaç geçici çözümler denedi ama (aynı zamanda frame.html içeriği göz böylece) canlı iframe'de web sitesi tutarken bunların hiçbiri çalıştı.

    Herhangi bir çözüme açığım - komut dosyalarını çocuğa aktarıyorsa veya çocuk komut dosyalarını ebeveynlerden veya herhangi bir yer paylaşımlı özümden alıyorsa. iframe'in aynı dizinde bir çevrimdışı dosyaya yeniden yönlendirilmesi için bir çözüm varsa, bu ilk an için iyi olur.

    Çok şimdiden teşekkür ederiz!


    DÜZENLEME: bununla

    Hala var sorunlar - bu bitmeyecek bir döngüye gelir: jQuery ile bu yapmış

    $('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'de her zaman sayfanın kontrolü sizde olacak mı yoksa rasgele sayfalar yerleştirmek ister misiniz? Muhtemelen olay dinleyicilerini çerçeveye ilgi duyduğunuz gibi yerleştirmelisiniz, ancak bunu yalnızca içeriğinin kontrolü üzerinde yapıyorsanız yapabilirsiniz. – kar288

    +0

    Cevabınız için teşekkür ederiz - iframe'deki sayfa üzerinde tam kontrole sahibim. Ancak gelecekteki amaçlar için yabancı bir web sitesinde bir bağlantı da harika olacaktır. Şu anda zaman aşımı sadece bir uyarı ile bağlanmıştır. Ancak, web sitesinin XX saniye boyunca işlem yapılmadığında (ana sitenin!) Başlangıç ​​sayfasına atlamasını istiyorum. Bu, scriptleri frame.html dosyasında uygulayarak nasıl mümkün olur? –

    +0

    Elbette iframe ortadan kaldırmak için başka bir çözüm olabilirdi - ama PHP çalışmadığından beri nasıl bilmiyorum ...? –

    cevap

    1

    . Link.

    Sorun, iframe.html alanınızda olmadığında bu çapraz etki alanını yapamazsınız.

    +0

    Ne yazık ki bu benim için işe yaramıyor ... Lütfen bana bahsi geçen java betiklerinin nasıl entegre edileceğini söyler misiniz? => https://jsfiddle.net/khed9gx5/ –

    +0

    Ne tür bir sorununuz var? Bence her şey bağlantıda açıklandı. JQuery'nin çalışması için jQuery.js dosyasını index.html dosyanıza eklemeniz gerekir. Ancak, iFrame'inize etki alanınızdaki içeriği yüklemek istiyorsanız bir sorunla karşılaştığınızı söylediğim gibi. – Nalipu

    +0

    Sorunum, jQuery'de iki komut dosyasını (sağ tıklama ve zamanlayıcı devre dışı bırak) devre dışı bırakmaktır. Ben profesyonel değilim - bu yüzden bu web portalını kullanıyorum. –