SORU
2 HAZİRAN 2012, CUMARTESİ


Windows 8 Metro Uygulama JavaScript ile jQuery kullanarak güvenlik hatası neden olur.

jQuery was an option for Metro JavaScript apps, gibi geldi beri Windows 8 dev ileriye bakmaya başlamıştım. Visual Studio 2012 Express RC kurdum ve yeni bir proje (her ikisi de boş ve ızgara şablonları aynı sorun var) başladı.

JQuery 1.7.2 yerel bir kopyasını yaptım ve komut referans olarak eklendi.

<!-- SomeTestApp references -->
<link href="/css/default.css" rel="stylesheet" />
<script src="/js/jquery-1.7.2.js"></script>
<script src="/js/default.js"></script>

Ne yazık ki, ortaya çıkan uygulama koştum en kısa sürede dışarı fırlatır bir hata konsolu:

HTML1701: dinamik içerik eklemenin 'bir' komut dosyası dinamik içerik enjekte etmek için, ya da teşebbüs elemanları daha önce değiştirilmiş olmayabilecek dinamik. İçin örneğin, innerHTML özelliği komut veya hatalı biçimlendirilmiş bir HTML eklemeyi kullanma bu özel durum oluşturur. Filtre için toStaticHTML yöntemi kullanın dinamik içerik, ya da açıkça bir ile öğeleri ve öznitelikleri oluşturmak createElement gibi yöntemi. Daha fazla bilgi için, bkz: http://go.microsoft.com/fwlink/?LinkID=247104.

Bir WordPress kullanmak olmayan minified versiyonu bir kesme tokat attım ve the offending line buldu

div.innerHTML = "   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";

Görünüşe göre, Metro güvenlik modeli forbids creating elements this way uygulamalar. Bu hata, kullanıcı için herhangi bir acil sorunları neden olmaz, ama konumu, yeteneği bulma jQuery testleri başarısız olmasına neden olur endişeliyim verilen bu olmamalı.

Ben kesinlikle her şeyi kolaylaştırmak için $.Deferred bir WordPress kullanmak istiyorum. Seçici motoru ve olay işleme sistemleri kullanabilmek tercih ederim, ama eğer olsaydı onlar olmadan yaşamak istiyorum.

Ne kadar güzel bir Metro gelişim ile oynamak için yeni bir WordPress kullanmak mı?

CEVAP
2 HAZİRAN 2012, CUMARTESİ


Bu gibi güvenli olmayan içerik denetimi devre dışı bırakır MSApp.execUnsafeLocalFunction jQuery.support işlevi geçirmek, böylece bir WordPress kullanmak kaynağını düzenlemek gerekir:

jQuery.support = MSApp.execUnsafeLocalFunction(function() {

    var support,
        all,
        a,
        select,
        opt,
        input,
        fragment,
        tds,
        events,
        eventName,
        i,
        isSupported,
        div = document.createElement( "div" ),
        documentElement = document.documentElement;


    // lots of statements removed for brevity

    return support;
});

Parantez son çifti kaldırmak için hatırlamamız gerekiyor - execUnsafeLocalFunction otomatik olarak geçirilir görevini yerine getirir, çünkü kendi kendine çalışan bir işlev gerekmez.

Daha iyi bir yaklaşım ertelenmiş operasyonlar Söz desen uygulaması olan) bir alternatif olarak WinJS özellikleri - WinJS.Promise nesne içerir kullanmak için öneririm. Ve bazı temel DOM manipülasyon WinJS.Utilities ad kullanarak yapabilirsiniz.

İki kez ertelenen işlemler için jQuery kullanarak düşünmek gerekir. WinJS.Promise nesne Metro API boyunca uyumsuz faaliyetler göstermek için kullanılır ve benzer ama farklı iki yaklaşım kullanarak sona erecek.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • André Frizzo

    André Frizz

    16 Aralık 2006
  • Flohoo

    Flohoo

    12 EYLÜL 2009
  • Justin Case

    Justin Case

    3 EKİM 2011