2016-04-09 25 views
6

Ben basit aurelia görünümüne basit komut bloğunu ekliyorum yürütülmez betik bloğu DOM'de görünür.Script etiket

ben de dinamik ViewModel aracılığıyla bir komut dosyası bloğu eklemeye çalıştık ve ayrıca denedim: Ben bunu yapmanın en iyi uygulama değil anlıyorum

<script type="text/javascript" src="http://blah"></script> 

, ama üçüncü parti widget'ı bütünleştirmek çalışıyorum o daha sonra bir iframe oluşturur. Yukarıda gösterilen uyarı, gördüğümü doğrulamanın basit bir yoludur. Benim bakış modelinden üçüncü bir tarafa bir API çağrısı yapmak

  • şu şekildedir:

    gerçek hayat senaryodur.

  • şu döndürülür:

    <script type='text/javascript' language='JavaScript' src =' https://secure.na1.echosign.com/public/embeddedWidget? `Wid = CBFCIBAA3AAABLblqZhBU33GaMRZ2lMelHKzti7RkanxMP5v- uW_f8CEiKoopNNofJWyXhmE56Su3HTbY * & belirteç = CBNCKBAAHBCAABAARNiZ7Yba0h7dnLaQRBAdTdH9UrJZKryP'/> Ben DOM bu ekler ve bunu yürütmek olması gerekir

. Bu soruna, yukarıdaki url'yi getirme yoluyla çağırarak çalışıyorum ve daha sonra yanıtı çalıştırıyorum, ancak bunu yapmanın sıkıcı/korkak bir yolu gibi görünüyor.

cevap

3

Bu yanıtta verilen çözümü uyarlamanızı öneririm: Use JS variable to set the src attribute for <script> tag. Gelen

senin SM'nin bind veya attached yöntemi (büyük olasılıkla): Gerekirse

let scriptURL = api.getURL(); 

let scriptElement = document.createElement('script'); 

scriptElement.src = scriptURL; 
scriptElement.onload =() => { 
    // do anything you need to do here, or call a VM method 
    this.someVMMethod(); 
}; 

this.scriptElementInHead = document.querySelector('head').appendChild(scriptElement); 

, hatta bir referansı tutmak ve ne zaman bileşeni kafa öğesinden kaldırarak komut elemanını kaldırabilirsiniz unbind veya detached yöntemlerinde kaldırılıyor.

detached() { 
    document.querySelector('head').removeChild(this.scriptElementInHead); 
} 
+0

Yukarıdaki basit uyarı örneği için gerçekten işe yarayan çalışma, bu nedenle çok teşekkürler - Hala DOM'da bulunan bir komut dosyasının neden idam edilmediğini anlamak isterim! Bununla birlikte, üçüncü taraf widget'ını kullanmayı denediğimde işe yaramıyor. Bunun nedeninin üçüncü taraflardan döndürülen komut dosyası şöyledir: document.write ('') ; Bu, genel bir document.write sorunu komut dosyası etiketinden daha fazla olduğundan şüpheleniyorum. –

+0

Şüphelendiğim gibi, bu hatayı izledim: embeddedWidget? Wid = CBFrJZ5QxKH5Ybg4ZRieHjGEJ_TbgQ7K…: 1 'Belge' üzerinde 'yazma' yürütmek için bir dosya: Bir zaman uyumsuz olarak yüklenmiş bir dış belgeye yazmak mümkün değil Açıkça açılmadıkça betik. Etkinleştirme yöntemini kullanırken bu hata gösterilmiyor, ancak yükü bir düğmeye bağladığımda gösterildi. Anladığım sorun, Aurelia ile ilgili bir sorun değildi, daha fazla yüklendiğinde üçüncü taraf widget'ının uygulanması. Cevabınızı çoğu senaryoda işe yarayacağı şekilde kabul edeceğim. –

+0

Yardımseverliğe sevindim :-) –