2013-12-15 2 views
0

Перенаправление не работает, когда «this._try == 1»?Перенаправление Если - Javascript

Вот полный JS, однако он больше не проверяет попытку == 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> 
+0

Попробуйте перевести его на обратный вызов setTimeout? – brandonscript

+0

Это не похоже на код, который мы хотим показать нам. Некоторые части прокомментированы, и почему вы используете 'this', вы создаете объект? показать весь код? –

+0

@popnoodles его код все еще не имеет смысла, может у понять, что это за «это»? –

ответ

2

Вы пытаетесь использовать 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. Функция bobo - это когда происходит перенаправление, если глобальный var является истинным.

Вы могли бы сделали это из-за другой логики, mught изменить свой this._try, но если все, что вы хотели сделать, это перенаправление через х секунд, затем короткая версия будет:

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

Кто-то указал, что это должно быть 'window.location.href = ...' или оба работают? – Popnoodles

+0

Это работает отлично! Спасибо, Итай :) –

+0

@popnoodles работают, но чтобы быть в безопасности, я отредактирую вашу версию –

1

вы можете добавить новую функцию с содержанием window.location.href = "http://www.google.com/", а затем редактировать SetTimeout ('[название функции]', 4000).

0

Вы должны пройти функция setTimeout. И я думаю, вы должны сделать перенаправление в функции.

var that = this; 
function ouvre(fichier) { 
    ff=window.open(fichier,"popup","width=600px,height=300px,left=50%,top=50%"); 
    //this._try = 1; 
    var fn = function() { 
     that._try = 1; 
     window.location = 'http://google.com'; 
    } 
    setTimeout(fn, 4000); 
} 
+0

. Это тоже работает, и он не использует глобальные вары, поэтому я собираюсь реализовать это. Спасибо огромное! –

Смежные вопросы