2016-03-22 23 views
-2

Bu komut dosyasını yeniden başlatmak için hangi kodu yazmam gerekiyor? Yeni/güncellenmiş bilgileri işlemesine izin vermek için komut dosyasını bir kod aracılığıyla tamamen sıfırlamak/güncellemek istiyorum. Belki de onu durdurmak ve tekrar başlatmak için en iyi yol. Ama nasıl?Bu betiği yeniden başlat

<script type="text/javascript"> 
var _myplug = _myplug || {}; 
_myplug.key = '12e9u349u43098j8r940rjciocjo'; 
_myplug.renderTo = ''; 
window.myplug||(function(d) { 
    var s,c,o=myplug=function(){ o._.push(arguments)};o._=[]; 
    s=d.getElementsByTagName('script')[0];c=d.createElement('script'); 
    c.type='text/javascript';c.charset='utf-8';c.async=true; 
    c.src='js/loader.js?';s.parentNode.insertBefore(c,s); 
})(document); 
</script> 
+0

Bu betik "loader.js" adlı başka bir komut dosyası yüklüyor - muhtemelen loader.js tüm işleri yapıyor, senaryosunun "geri alması" veya " onu başlat. Bu dosya, komut dosyasında açıkça yeniden başlatmanıza izin veren işlevselliğe sahip olmadıkça, kolayca yeniden başlatılamayacağınız nesneler ve işlevler oluşturacaktır. –

cevap

1

Eh, senaryo hakkında yeterli bilgi bilmeden, burada senaryoyu yeniden emin olacak bir hacky bir yöntem vardır: Kendi el yazısı etiketi bir kimlik gerekir

function reloadScript() { 
    with(document) { 
    var newscr = createElement('script'); 
    newscr.id = 'reloadMe'; 
    newscr.appendChild(createTextNode(getElementById('reloadMe').innerHTML)); 
    body.removeChild(getElementById('reloadMe')); 
    body.appendChild(newscr); 
    } 
} 

:

<script type="text/javascript" id="reloadMe"> 

Update:

yukarıdaki yöntem ISN' kodunuzu yenilemek için yeterlidir, çünkü kodunuz ayrıca loader.js olarak adlandırılan belgedeki başka bir komut dosyasını da ekler.

İşte sizin durumunuz için özel bir sürümü:

<script type="text/javascript" id="notTheScriptYouWannaRefresh"> 
var _myplug = _myplug || {}; 
_myplug.key = '12e9u349u43098j8r940rjciocjo'; 
_myplug.renderTo = ''; 
window.myplug||(function(d) { 
    var s,c,o=myplug=function(){ o._.push(arguments)};o._=[]; 
    c=d.createElement('script'); 
    c.type='text/javascript';c.charset='utf-8'; 
    c.async=true;c.id='reloadMe'; //<-- CUSTOM ID SET! 
    c.src='js/loader.js?';d.body.appendChild(c); 
})(document); 

function reloadScript() { 
    with(document) { 
    var newscr = createElement('script'); 
    newscr.id = 'reloadMe'; 
    newscr.appendChild(createTextNode(getElementById('reloadMe').innerHTML)); 
    body.removeChild(getElementById('reloadMe')); 
    body.appendChild(newscr); 
    } 
} 

window.setTimeout(reloadScript, 10000); //Reload after 10 seconds 
</script> 

Umut bu sorunu çözer.

+0

Maalesef aradığım şey bu değil. Komut dosyası yeniden ayarlanmamış veya yeniden başlatılmamış, dolayısıyla bunun nedenini araştırıyorum. Belki de loader.js hakkında sizden bahsettiğim ipucu budur. Bulduğumda burada yayınlayacağım. Kodlama bazen istediğinizden daha zor görünüyor. Sadece STOP komut dosyası ve START! Ne kadar basit .... – Cinzel

+0

window.myplug || 'penceresinden 'window.myplug ||' i çıkarın (işlev (d) {' –

+0

Yardımlarınız için minnettarım.Ne yazık ki kodları değiştirdiğimde hiçbir şey yapmıyor gibi görünüyor. önerdiğiniz gibi Teşekkürler BTW – Cinzel

0

Daha fazlasını biliyorum.

@AaronGillion'un önerdiğiyle aynı olan başka bir yöntem buldum. Sadece tetik farklıdır (her x saniyede yeniden başlar).

http://jsfiddle.net/mendesjuan/LPFYB/

benim komut kodları ile scriptTag.innerText değiştirilir:

Bu

yöntemdir. Komutumun başarılı bir şekilde başladığını gördüğümden beri, komut dosyasının her x saniyede kaldırılıp yeniden yerleştirildiğini de anlıyorum. Ve bu betiği güncellemediğinden, betiğin eski durumda devam etmesini sağlayan başka bir şeyin yüklü olduğunu kanıtlar. Loader.js olabilir. Ne yazık ki JS bilgim sınırlıdır. Loader.js, kodumdan nasıl yeniden başlatılır? Anlaşılır olması için ben loader.js dahil tekrar Aşağıda bu konudan kodu yapıştırın:

<script type="text/javascript"> 
var _myplug = _myplug || {}; 
_myplug.key = '12e9u349u43098j8r940rjciocjo'; 
_myplug.renderTo = ''; 
window.myplug||(function(d) { 
    var s,c,o=myplug=function(){ o._.push(arguments)};o._=[]; 
    s=d.getElementsByTagName('script')[0];c=d.createElement('script'); 
    c.type='text/javascript';c.charset='utf-8';c.async=true; 
    c.src='js/loader.js?';s.parentNode.insertBefore(c,s); 
})(document); 
</script> 

Soru loader.js yeniden nasıl.

+0

'scriptTag.innerText' Firefox'ta çalışmaz. Mozilla bunun yerine 'scriptTag.textContent' kullanır. // Güncellenmiş cevabımı kontrol edin, kodumun loader.js durumunuz için çalışmasını sağladım! –

İlgili konular