我在执行脚本时遇到了一些困难。我是HTML和JQuery的新手。
使用Google表格和Google Apps脚本:
我有3个问题的文件:
'sidebar.html'
'popup.html'
'scriptsJS.html'
两个'侧边栏的脚本'和' popup'都在' scriptsJS'。
按钮"#btnRefreshData"被绑定到侧边栏中的按钮&#39 ;;此按钮和相关脚本按预期工作。
我试图从另一个绑定到' popup.html'中的不同buttin的脚本触发相同的按钮,但该调用被忽略。
以下脚本位于' scriptsJS.html'中,并且绑定到' popup.html'中的按钮:
$( '#btnOpenSelectedItem' ).click(function() {
this.disabled = true;
var item = $( "#resultsList" ).find(':selected').val();
google.script.run
.withSuccessHandler(
function(msg, element) {
element.disabled = false;
doThis();
google.script.host.close();
})
.withFailureHandler(
function(msg, element) {
showStatus(msg, 'error');
element.disabled = false;
})
.withUserObject(this)
.openSelectedItem(item);
});
上面的脚本正确执行;我的数据加载,然后调用' doThis':
function doThis () {
alert ('do this called');
$( "#btnRefreshData" ).trigger( "click" ); //<-- ignored
};
上面的脚本成功显示警报(用于测试),然后尝试触发#btnRefreshData。 #btnRefreshData绑定到&#39; sidebar.html&#39;,并导致侧边栏中的数据重新填充。
同样,所有这些脚本都在同一个文件中,但当我从&#39; popup.html&#39;中调用#btnRefreshData(绑定到&#39; sidebar.html)时,它会被忽略。
我希望找到触发此事件的方法。谢谢你能给我的任何帮助。
答案 0 :(得分:0)
我猜这是一个事件委托问题,你如何绑定#btnRefreshData
的点击处理程序?如果您没有委托它,请尝试按如下方式委派它:
$( "#btnRefreshData" ).on( "click", function() {} ); //My guess on how you are binding it.
$( document ).on( "click", "#btnRefreshData", function() {} ); //Delegating the event.
答案 1 :(得分:0)
Apps脚本使用caja编译代码。对于设计,您可以在普通javascript上获得的一些选项被禁用,并且以编程方式触发单击是其中之一。这就是您提到的代码被忽略的原因。 在这种情况下,最好调用单击按钮时执行的方法&#34;#btnRefreshData&#34;在你的doThis方法里面。
您可以在此处找到一些解释:https://code.google.com/p/google-caja/issues/detail?id=1404 https://developers.google.com/apps-script/guides/html/restrictions#restrictions_in_native_and_emulated_mode