iframe与Mousemovement - 或:父子冲突

时间:2016-04-06 10:46:57

标签: javascript html iframe parent offline

首先,我的项目有很严格的限制:

  • 离线可用性
  • 尽可能简单的编码

=> PHP和其他语言不是一个选项 - 只有html和javascript。

结构:

  • 的index.html
  • frame.html

index.html包含:

  • 一个简单的iframe:
  

< iframe width =“100%”height =“100%”src =“frame.html”frameborder =“0”>
< / IFRAME>

  • 用于禁用鼠标右键单击的JavaScript:
  

< script language =“javascript”> document.onmousedown = disableclick;
  status =“右键单击已禁用”; function disableclick(event){
  if(event.button == 2){
       警报( “TEST”);
       返回false; }< /脚本>

  • 用于检测用户何时不活动的另一个JavaScript:
  

<脚本> var 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); } function resetTimer(e){
      window.clearTimeout(timeoutID);
      的goActive();函数goInactive(){
      //做点什么        警报( “超时”);
       返回false;函数goActive(){
      //做点什么       startTimer所(); }
< /脚本>

  • css文件还包含鼠标光标的一些限制:
  

身体{
  background-color:#f0f0f0;
光标:无!重要;
  -webkit-user-select:none;
  -moz-user-select:none;
  -ms-user-select:none; user-select:none;
}

=>这对于index.html非常有效 - 但不适用于iframe(目前这是同一目录中的本地文件,但它也应该能够在网站上链接)。

我尝试了几种解决方法,但是没有一个工作方法同时保持网站在iframe中(这样你也可以浏览frame.html的内容)。

我对任何解决方案持开放态度 - 如果它将脚本交给孩子,或者孩子从父母或任何覆盖解决方案获取脚本。 如果iframe重定向在同一目录中的脱机文件上有解决方法 - 这在第一时间就可以了。

非常感谢你!

修改

仍然遇到问题 - 这是一个无休止的循环:

$('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'");

1 个答案:

答案 0 :(得分:1)

我用jQuery完成了这个。 Link

问题是当您的iframe.html不在您的域中时,您无法执行此跨域。