Html5 Web Workers Örneği Çalışmıyor
-
Arkadaşlar aranızda Html5 ile ilgilenenlere bir sorum olacaktı. http://www.w3schools.com/html/html5_webworkers.asp şu adreste bulunan örneği kendi bilgisayarımda yapmaya çalışıyorum. Fakat hata alıyorum. http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_webworker bu örneği yapmaya çalışıyorum. start butonuna basınca 1'den saymaya başlayacak. Stop'a basınca da duracak. Fakat ben bu örneği aynı kodları yazarak masaüstüme kaydediyorum. Açıyorum örneğimi ama çalışmıyor. Uncaught SecurityError: Failed to construct 'Worker': Script at 'file:///C:/Users/tbt/Desktop/demo_workers.js' cannot be accessed from origin 'null'. Şöyle bir hata veriyor. 17. satırda w = new Worker("demo_workers.js"); bu kodun yanında kırmızı çarpı işareti çıkıyor ve yukarıda yazdığım hatayı veriyor. Bu arada masaüstünüzde ayrıca demo_workers.js adında bir script dosyası olması lazım. Ve demo_workers.js dosyasının içinde aşağıdaki kodlar bulunuyor :
var i=0; function timedCount() { i=i+1; postMessage(i); setTimeout("timedCount()", 500); } timedCount();
-
Direk html e çift tıklayıp çalıştırdın sanırım ondan. Localhost kur orada çalıştır.
-
Cosmic bunu yazdı
Direk html e çift tıklayıp çalıştırdın sanırım ondan. Localhost kur orada çalıştır.
Dediğin gibi yaptım. Wamp Server kuruluydu bilgisayarda. Localhosta atınca dosyaları çalıştı. Ama işin garip tarafı şu; Bu kodlarda hiçbir php kodu yoktu ki. Sadece JavaScript kodları vardı. Nasıl oluyorda localhost'ta çalışıp benim Masaüstümde çalışmıyor kodlar? Bunu bana açıklayacak biri var mı?
-
arabaci88 bunu yazdıCosmic bunu yazdı
Direk html e çift tıklayıp çalıştırdın sanırım ondan. Localhost kur orada çalıştır.
Dediğin gibi yaptım. Wamp Server kuruluydu bilgisayarda. Localhosta atınca dosyaları çalıştı. Ama işin garip tarafı şu; Bu kodlarda hiçbir php kodu yoktu ki. Sadece JavaScript kodları vardı. Nasıl oluyorda localhost'ta çalışıp benim Masaüstümde çalışmıyor kodlar? Bunu bana açıklayacak biri var mı?
oradaki sıkıntı kodun derlenmesi vs. ile alakalı birşey değil. tamamen dosya yolu ile alakalı. kendi dosya sisteminden çağırınca js yi aynı domainde gibi algılamıyor o yüzden browser access hatası veriyor. mesela yine localhostta çalıştırıp js yolu olarak example.com/dosya.js versen yine aynı hatayı alacaksın.
-
Cosmic bunu yazdıarabaci88 bunu yazdıCosmic bunu yazdı
Direk html e çift tıklayıp çalıştırdın sanırım ondan. Localhost kur orada çalıştır.
Dediğin gibi yaptım. Wamp Server kuruluydu bilgisayarda. Localhosta atınca dosyaları çalıştı. Ama işin garip tarafı şu; Bu kodlarda hiçbir php kodu yoktu ki. Sadece JavaScript kodları vardı. Nasıl oluyorda localhost'ta çalışıp benim Masaüstümde çalışmıyor kodlar? Bunu bana açıklayacak biri var mı?
oradaki sıkıntı kodun derlenmesi vs. ile alakalı birşey değil. tamamen dosya yolu ile alakalı. kendi dosya sisteminden çağırınca js yi aynı domainde gibi algılamıyor o yüzden browser access hatası veriyor. mesela yine localhostta çalıştırıp js yolu olarak example.com/dosya.js versen yine aynı hatayı alacaksın.
Değişik bir durum. Bunu tekrar incelemem gerekecek sanırım.
-
Sitelerini localhost'ta çalıştırman her zaman daha sağlıklı olsada şu an yaşadığın sorunu çözmek istiyorsan Chrome'u
--allow-file-access-from-files
flag'ı ile açman yeterli olur. Komut satırından açabilirsin ya da chrome kısayolunun özelliklerine girip dosya yolunun sonuna bu flag'ı ekleyebilirsin. -
<!DOCTYPE html> <html> <body> <p>Count numbers: <output id="result"></output></p> <button onclick="startWorker()">Start Worker</button> <button onclick="stopWorker()">Stop Worker</button> <p><strong>Note:</strong> Internet Explorer 9 and earlier versions do not support Web Workers.</p> <script> var w; function startWorker() { if(typeof(Worker) !== "undefined") { if(typeof(w) == "undefined") { w = new Worker(URL.createObjectURL(new Blob(["("+worker_function.toString()+")()"], {type: 'text/javascript'}))); } w.onmessage = function(event) { document.getElementById("result").innerHTML = event.data; }; } else { document.getElementById("result").innerHTML = "Sorry, your browser does not support Web Workers..."; } } function stopWorker() { w.terminate(); w = undefined; } function worker_function() { var i=0; function timedCount() { setInterval(function(){ i=i+1; postMessage(i); },500); } timedCount(); } </script> </body> </html>
Yukarıdaki şekilde tek bir html içinde çalışıyor ama stop worker deyince son sayıyı aklında tutamayıp, tekrar saymaya sıfırdan başlıyor. Ona bir çözüm getirmek lazım ama böyle de işini görürse kullan hocam.