如何让onchange设置onclick = window.open(url)?

时间:2015-03-14 05:52:45

标签: javascript google-apps-script google-apps

我在GAS html服务中有一个应用程序,其中包含文件选择框,旁边有一个按钮,用于在新选项卡中打开它们。我无法弄清楚如何完成它。列表中的文件以google-drive-file-id形式获取其值(假设fileID1-3正常),并且我有一个用于获取整个链接的服务器脚本。以下是它的完成方式:

HTML:

<select id='fileBox' name='fileBox' onchange="google.script.run.withSuccessHandler(gotFileLink).getFileLinkById(this.value)">
<option value=fileID1>File1.pdf</option>
<option value=fileID2>File2.pdf</option>
<option value=fileID2>File3.pdf</option>
</select>
<input type="button" value="Open File" id="linkButton" />

服务器代码:

function getFileLinkById(fileID) { return DriveApp.getFileById(fileID).getUrl(); }

客户代码:

function gotFileLink(url) {
document.getElementById('linkButton').onclick = // what goes here?
}

我尝试了几种使用&#34; window.open&#34;但无法弄清楚如何使其发挥作用。 提前谢谢。

2 个答案:

答案 0 :(得分:2)

以下代码可以帮助您在点击按钮时打开所需的链接。

这是一个有用的链接:  JSFIDDLE

<select id='fileBox' name='fileBox'>
<option value='http://www.google.com'>File1.pdf</option>
<option value='http://www.google.com'>File2.pdf</option>
<option value='http://www.google.com'>File3.pdf</option>
</select>
<input type="button" value="Open File" id="linkButton" />


var btn = document.getElementById('linkButton');
btn.addEventListener('click',GetInfo,false);

function GetInfo(){
var e = document.getElementById("fileBox");
var selectedUrl = e.options[e.selectedIndex].value;
window.open(selectedUrl);  
}

答案 1 :(得分:1)

回答我自己的问题,但基于maxspan的解决方案(这不是我想要的)我能够以另一种方式解决这个问题:

<select id='fileBox'>
<option value=fileID1>File1.pdf</option>
<option value=fileID2>File2.pdf</option>
<option value=fileID2>File3.pdf</option>
</select>
<input type="button" value="Open File" id="linkButton" onclick="runner.withSuccessHandler(window.open).getFileLinkById(document.getElementById('fileBox').value)" />

如果有人有不同/更好的答案 - 我仍然希望听到它...感谢maxspan帮助我。