Apps Komut Dosyası bir güvenlik korumalı alanı kullanır
ve Google Workspaceiçin koruyucu izolasyon sağlar.
bazı durumlarda kullanılabilir. Tümü
IFRAME
dışında korumalı alan modları artık kullanımdan kaldırıldı. Daha eski korumalı alanı kullanan uygulamalar
modları artık otomatik olarak yeni IFRAME
modunu kullanıyor.
Daha önce HTML Hizmeti ile bu eski modları kullanan uygulamaların
IFRAME
modunda aşağıdaki farklılıkları gidermek için değişiklikler yapın:
- Şimdi bağlantının
target
özelliğinitarget="_top"
veyatarget="_blank"
- HTML Hizmeti tarafından sunulan HTML dosyalarında <!DOCTYPE html>, <html> ve <body> etiketleri
- Google yerel yükleyici kitaplığı
api.js
şu sürede otomatik olarak yüklenmiyor:IFRAME
modu - Kullanıcıların araması gereken seçici
İçerik yeni bir alan adından sunulduğu için
setOrigin()
- IE9 dahil olmak üzere bazı eski tarayıcılar desteklenmez
- İçe aktarılan kaynaklar artık HTTPS kullanmalıdır
- Form gönderilmesi artık varsayılan olarak engellenmiyor
Bu farklar aşağıdaki bölümlerde ayrıntılı olarak açıklanmıştır.
Bağlantı hedefi özelliğini ayarlama
IFRAME
modunda bağlantı hedefi özelliğini _top
veya _blank
olarak ayarlamanız gerekir:
Code.js
function doGet() {
var template = HtmlService.createTemplateFromFile('top');
return template.evaluate();
}
top.html
<!DOCTYPE html>
<html>
<body>
<div>
<a href="http://google.com" target="_top">Click Me!</a>
</div>
</body>
</html>
Bu özelliği, kapsayıcı web sayfasının head bölümündeki <base> etiketini kullanarak da geçersiz kılabilirsiniz:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
Üst düzey HTML etiketleri
NATIVE
(ve EMULATED
) korumalı alan modunda belirli HTML etiketleri
otomatik olarak Apps Komut Dosyası .html dosyasına eklenir. Ancak
IFRAME
modunu kullanıyor.
Proje sayfalarınızın IFRAME
kullanılarak doğru şekilde sunulduğundan emin olmak için
sayfa içeriğini aşağıdaki üst düzey etiketlere ekleyin:
<!DOCTYPE html>
<html>
<body>
<!-- Add your HTML content here -->
</body>
</html>
Yerel JavaScript yükleyici kitaplığı açıkça yüklenmelidir
api.js
yerel yükleyici kitaplığının otomatik olarak yüklenmesini temel alan komut dosyaları
aşağıdaki örnekte olduğu gibi bu kitaplığın açıkça yüklenmesi için değiştirilmesi gerekir:
<script src="https://apis.google.com/js/api.js?onload=onApiLoad">
</script>
Google Picker API'si değişikliği
Google Picker API'sini kullanırken artık derleme işlemi sırasında setOrigin()
yöntemini çağırmalısınız.
PickerBuilder'ı seçeceğim ve gösterildiği gibi google.script.host.origin
kaynağında geç
aşağıdaki örnekte:
function createPicker(oauthToken) {
var picker = new google.picker.PickerBuilder()
.addView(google.picker.ViewId.SPREADSHEETS) // Or a different ViewId
.setOAuthToken(oauthToken)
.setDeveloperKey(developerKey)
.setCallback(pickerCallback)
.setOrigin(google.script.host.origin) // Note the setOrigin
.build();
picker.setVisible(true);
}
Çalışan tam bir örnek için Dosya açma iletişim kutuları başlıklı makaleyi inceleyin.
Tarayıcı desteği
IFRAME
korumalı alan modu şuna göredir:
iframe korumalı alanı
kullanabilirsiniz.
Bu özellik, Internet Explorer 9 gibi bazı eski tarayıcılarda desteklenmemektedir. Bu
Apps Komut Dosyası projenizde şunlardan biri geçerliyse sorun olabilir:
HtmlService
ve- daha önce
EMULATED
veyaNATIVE
korumalı alanı kullanıldı
Bu uygulamalar IFRAME
korumalı alan moduna taşınırsa artık şu cihazlarda çalışmayabilir
HTML5'in iframe'ini desteklemeyen bazı eski tarayıcılar (özellikle IE9 ve önceki sürümler)
korumalı alan oluşturma özelliği.
Zaten IFRAME
modunu isteyen veya HtmlService
kullanmayan uygulamalar
bu sorundan etkilenmez.
İçe aktarılan kaynaklar için artık HTTPS zorunludur
Kaynakları HTTP kullanarak içe aktaran önceki uygulamaların HTTPS kullanın.
Form gönderilmesi artık varsayılan olarak engellenmiyor
Korumalı alana alınan HTML formlarının NATIVE
altında gönderilmesi engellendi
ve sayfada gezinme ile ilgili daha fazla bilgi edinebilirsiniz. Bu durumda, geliştiriciler onclick
ve sonrasında ne olduğu konusunda endişelenmenize gerek kalmaz.
Ancak IFRAME
modunda HTML formlarının gönderilmesine izin verilir ve
öğesinin boş bir sayfaya göndereceği belirtilmiş bir action
özelliğine sahip değil.
Daha kötüsü, iç iframe'in onclick
etiketinden önceki boş sayfaya yönlendirmesi
bitirme şansına sahip olur.
Çözüm, sayfanıza formun doldurulmasını önleyen JavaScript kodu eklemektir öğelerinin gönderilmesini engeller. Böylece tıklama işleyicilere, işlev:
<script>
// Prevent forms from submitting.
function preventFormSubmit() {
var forms = document.querySelectorAll('form');
for (var i = 0; i < forms.length; i++) {
forms[i].addEventListener('submit', function(event) {
event.preventDefault();
});
}
}
window.addEventListener('load', preventFormSubmit);
</script>
Eksiksiz bir örneği HTMLService kılavuzunda bulabilirsiniz. İstemciden Sunucuya İletişim.