Bir SVG belgesine sahibim ve içine bir komut dosyası ekleyebilmek istiyorum (<script>
etiketini kullanarak). Bu betiğin içinde, belge yüklendiğinde ve manipülasyon için kullanılabilir olduğunda çağrılacak bir işlev kurmak istiyorum.SVG: Belge yüklendiğinde komut dosyasını çalıştır
Bunu HTML ve JQuery ile yapıyor olsaydım, $(document).ready(...)
kullanırdım. Ben bir SVG belgesi içinde aynı şeyi yapmak istiyorum ama açıkçası JQuery'yi aynı şekilde kullanamıyorum.
test.svg:
<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg">
<script type="text/ecmascript" xlink:href="myscript.js" />
<!-- Rest of SVG body goes here -->
</svg>
MyScript.js: istediğim
function init(evt) {
var svgDocument = evt.target.ownerDocument;
var svgRoot = svgDocument.documentElement;
// Manipulate SVG DOM here
}
// --> Somehow attach init() function to onload event of SVG <--
ben aradığım Özetle
, gibi bir şey açık bir'e bağlı olmak yerine betik içinde bunu denemek ve yapmak SVG tanımında. (Komut dosyasının nasıl çalıştığına dair herhangi bir bilgiye gerek duymadan, çeşitli SVG'lere dahil edilebilecek bir komut dosyası yazmak istiyorum.)
Muhtemelen, ama ben javascript üzerinden, ** SVG (veya en azından "
here bir örnektir
kaynak
2011-10-05 23:22:19 Clafou
Teşekkürler. Bu benim elde etmek istediğim şey. Ancak yapmak istediklerim, '
Hiçbir şey (ancak IE) standart DOM olay SVG gömülü JS işleyicileri kullanmanızı engelleyen: Genellikle kullandığınız, IE için
attachEvent
ya da öylesine, ama bilmiyorum, IE (> = 9) bunu SVG'de destekliyorsa.Çoğunlukla, SVG dosyaları bağımsızdır, bu nedenle DOMReady (DOMContentLoaded) ve yükleme olayları bu kadar uzak değildir (HTML, CSS dosyalarının ve resimlerinin yüklenmesi gereken düzinelerce karşılaştırılmıştır.) Bu nedenle, yükün kullanımı arasındaki fark DOMReady olayı yerine (ki maalesef henüz standartlaştırılmamış olan) bir etkinlik, ihmal edilebilir. Bunun dışında hiç denemedim, eğer tarayıcılar SVG'nin DOM'si yüklendiğinde DOMReady olayını bile tetiklerlerse.
kaynak
2011-10-06 08:15:07 Boldewyn
Komut dosyanızı svg belgesinin sonuna eklemeyi deneyebilirsiniz, ardından yük olayını beklemenize gerek yoktur. Ancak, betik çalıştırıldığında yüklü olmayan belge karnesindeki harici dosyalara başvuruyorsanız bu başarısız olabilir.
kaynak
2011-10-07 20:52:53