javascript - 重定向 If - Javascript

标签 javascript

当“this._try == 1”时重定向不起作用?

这是完整的 JS,但是它不再在单击时检查 try == 1,而是在窗口关闭时自动检查。

function ouvre(fichier) {

  ff=window.open(fichier,"popup","width=600px,height=300px,left=50%,top=50%")
  //this._try = 1;     
  setTimeout('this._try = 1;', 4000);
}


function playMovie(_try) {
  if (this._try == 1) { playsavideo(); }
  else { alert('You must share to unlock.'); }
}

function playsavideo(type) {
  {
    window.location = "http://google.com"


  }
}

窗口被这个调用...

<a href="#" onClick="ouvre('https://twitter.com/share?url=https%3A%2F%2Fdev.twitter.com%2Fpages%2Ftweet-button');return false">Test</a>

最佳答案

您尝试使用this作为值/全局变量的载体。
this 是一个“相对”变量,它始终与其所在对象的实例相关。
在您的代码中没有实例。即使是这样,函数内的 this 也会 引用一件事,而函数之外的任何其他 this 很可能会引用另一件事。

虽然全局变量不是好的做法。试试这个:

var i_am_a_global_var = false;
function ouvre(fichier) {
    ff=window.open(fichier,"popup","width=600px,height=300px,left=50%,top=50%");
    setTimeout(function(){window.i_am_a_global_var=true;bobo();}, 4000);
}

function bobo(){
  if (window.i_am_a_global_var) {
    window.location.href = "http://www.google.com/" 
  }
}
  1. 定义全局变量
  2. 当超时发生时,它将回调一个闭包 (function(){...}),该闭包将调用 bobo 函数。
  3. 如果全局变量为 true,bobo 函数就是重定向发生的地方。

您这样做可能是因为其他逻辑可能会改变您的 this._try 但如果您想做的只是在 x 秒后重定向,那么简短的版本将是:

window.open(fichier,"popup","width=600px,height=300px,left=50%,top=50%");
setTimeout('window.location.href = "http://www.google.com/"', 4000);

关于javascript - 重定向 If - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20590472/

相关文章:

javascript - 获取多边形的边界框

javascript - 查找页面中的文本行(有限的图像处理资源)

javascript - 在 Nodejs 中导出对象时,值未定义

javascript - 生成不含 O 和 0 的大写字母和数字的随机字符串

javascript - 在 Service worker 中使用 setInterval

javascript - Chrome "Can not drag"图标干扰了鼠标悬停事件,我该如何防止这种情况发生?

javascript - 等待 ajax 函数完成,直到使用间隔再次重新加载该函数

javascript - 从对象数组中,如何获取该对象值与变量匹配的对象值?

javascript - tinyMCE 在全屏模式下默认显示 HTML 代码

javascript - 单击标签时如何删除事件类?