Sergeのリンクをたどると、問題が修正され(ポップアップはIE8/9、FF、Chrome、Safari、Operaで正しく表示されます)、もう1つの変更が加えられました。基本的に、次のように Quirks モードの代わりに Standards モードを設定する必要があります (とにかく良い考えです)。
function doGet() {
var app = UiApp.createApplication().setStandardsMode(true);
...
}
もう 1 つの問題は、上記のコード (および私のコード) が CSS ユニットを指定していないことです。これは技術的にはエラーです。px
Quirks モードで動作します (ブラウザーが推測するのではなく、GAS が実際に提供していると思います)。標準モードでは、GAS はパディング仕様を黙って削除し (悪い)、出力 CSS に表示されません。
編集
リクエストに応じて、確認ダイアログのポップアップ コードを以下に追加しました。を除いて修正はありませんpx
が、従来の yes/no ダイアログ ボックスのように変更したため、元の多くが消えてしまいました。submitHandler
ポップアップを生成するためにトリガーし、 と のコードを記述する必要がOkHandler
ありCancelHandler
ます。ここでの主な問題は、ポップアップの配置です。上記のリンクを参照してください。
/* ----------------------------------------------------------------------------
* All the remaining code in this file handles a modal
* dialog box which appears when the user hits the 'submit' button. The box
* is not movable (a GAS bug), but it can be positioned, by changing the
* 'top' and 'left' style attributes. Inspired by Serge's popup code at
* http://stackoverflow.com/q/13692563/785194.
* ------------------------------------------------------------------------- */
/**
* Popup setup. Create two vertical panels, with different Z indexes,
* and create a label in the popup panel which will hold the dialog
* text. Finally, add handlers for the 'Ok' and 'Cancel' buttons.
*/
function setupPopup(app, mainPanel) {
app.add(createMaskPanel());
var popup = app.createVerticalPanel()
.setId('popupPanelId')
.setVisible(false)
.setStyleAttributes({
'position' : 'fixed',
'border' : '1px solid blue',
'padding' : '10px',
'background' : 'beige',
// 'top' : POPUP_TOP,
// 'left' : POPUP_LEFT,
'width' : POPUP_WIDTH,
// 'height' : POPUP_HEIGHT,
'zIndex' : '2'});
popup.add(app.createLabel('').setId('dialogTextId'));
var OkHandler = app.createServerHandler('OkHandler')
.addCallbackElement(mainPanel)
.addCallbackElement(popup);
var CancelHandler = app.createServerHandler('CancelHandler')
.addCallbackElement(mainPanel)
.addCallbackElement(popup);
// create a table with two cells, and insert two buttons into those
// cells
var buttonTable = app.createFlexTable().setId('buttonTable');
buttonTable.insertRow(0).addCell(0).addCell(0);
var OkButton = app.createButton('Continue');
var CancelButton = app.createButton('Cancel');
OkButton.addClickHandler(OkHandler);
CancelButton.addClickHandler(CancelHandler);
buttonTable.setWidget(0, 0, OkButton);
buttonTable.setWidget(0, 1, CancelButton);
popup.add(buttonTable);
app.add(popup);
} // setupPopup()
/**
* A mask panel, to make the popup modal.
*/
function createMaskPanel() {
var app = UiApp.getActiveApplication();
var mask = app.createVerticalPanel()
.setId('maskPanelId')
.setSize('100%', '100%')
.setStyleAttributes({
'backgroundColor' : '#F0F0F0',
'position' : 'fixed',
'top' : '0',
'left' : '0',
'zIndex' : '1',
'opacity' : '0.6'})
.setVisible(false);
mask.add(app.createLabel('POPUP')
.setStyleAttribute('color', '#F0F0F0')
.setStyleAttribute('opacity', '0.6'));
return mask;
}
/**
* 'Submit' button handler.
*/
function submitHandler(e){
var app = UiApp.getActiveApplication();
var popup = app.getElementById('popupPanelId');
var mask = app.getElementById('maskPanelId');
app.getElementById('dialogTextId').setText("yada yada");
popup.setVisible(true);
mask.setVisible(true);
popup.setStyleAttributes(
{'top' : POPUP_TOP,
'left' : POPUP_LEFT});
return app;
}
/**
* Popup box 'Ok' handler; add the form data to the output spreadsheet.
*/
function OkHandler(e) {
...
return app;
}
function CancelHandler(e) {
...
return app;
}