1

为了解决谷歌网站*中奇怪的“观众不能发表评论”问题的解决方法,我编写了以下愚蠢的测试脚本:

function addComment(e) {
    var currentPage = SitesApp.getActivePage();
    var pageHTML = currentPage.getHtmlContent();
    var newHTML = pageHTML.replace("BEGIN", "BEGIN "+Session.getActiveUser().getEmail());
    currentPage.setHtmlContent(newHTML);
};

当用户按下按钮时,当前页面内容更改为在单词 BEGIN 之后包含当前用户的电子邮件地址(我手动插入 - 如果这可行,我可以粘贴评论标签 thingamabob。

这或多或少有效。问题是 setHtmlContent 调用首先对包含按钮的应用程序脚本小工具做了各种奇怪的事情。这是之前的小工具:

<img src="https://www.google.com/chart?chc=sites&amp;cht=d&amp;chdp=sites&amp;chl=%5B%5BGoogle+Apps+Script'%3D20'f%5Cv'a%5C%3D0'10'%3D499'0'dim'%5Cbox1'b%5CF6F6F6'fC%5CF6F6F6'eC%5C0'sk'%5C%5B%22Apps+Script+Gadget%22'%5D'a%5CV%5C%3D12'f%5C%5DV%5Cta%5C%3D10'%3D0'%3D500'%3D197'dim'%5C%3D10'%3D10'%3D500'%3D197'vdim'%5Cbox1'b%5Cva%5CF6F6F6'fC%5CC8C8C8'eC%5C'a%5C%5Do%5CLauto'f%5C&amp;sig=TbGPi2pnqyuhJ_BfSq_CO5U6FOI" data-origsrc="https://sites.google.com/a/macros/kstf.org/s/AKfycbzEsLBQucXCZZJwEh9c3RYhn81uJucvz3R5vHeJ2w/exec" data-type="maestro" data-props="align:left;borderTitle:Apps Script Gadget;height:200;showBorder:false;showBorderTitle:false;" width="500" height="200" style="display:block;text-align:left;margin-right:auto;"></div>

这是之后:

<img src="https://www.google.com/chart?chc=sites&amp;cht=d&amp;chdp=sites&amp;chl=%5B%5BGoogle+Gadget'%3D20'f%5Cv'a%5C%3D0'10'%3D499'0'dim'%5Cbox1'b%5CF6F6F6'fC%5CF6F6F6'eC%5C0'sk'%5C%5B%22Include+gadget+(iframe)%22'%5D'a%5CV%5C%3D12'f%5C%5DV%5Cta%5C%3D10'%3D0'%3D500'%3D197'dim'%5C%3D10'%3D10'%3D500'%3D197'vdim'%5Cbox1'b%5Cva%5CF6F6F6'fC%5CC8C8C8'eC%5C'a%5C%5Do%5CLauto'f%5C&amp;sig=CvjXRgodwYVKPvmsyZR7EbHx2uM" data-igsrc="http://0.gmodules.com/ig/ifr?mid=0&amp;synd=trogedit&amp;url=http%3A%2F%2Fwww.gstatic.com%2Fsites-gadgets%2Fiframe%2Fiframe.xml&amp;up_iframeURL=%2Fa%2Fmacros%2Fkstf.org%2Fs%2FAKfycbzEsLBQucXCZZJwEh9c3RYhn81uJucvz3R5vHeJ2w%2Fexec%3Fmid%3DACjPJvFOqF88RUUrqDeapp1PHF_lI3Xc3g5Hd3euTifzUYeaILmTTlMfBQ13yI_6%26bc%3Dtransparent%26f%3DArial%2C%2BVerdana%2C%2Bsans-serif%26tc%3D%2523444444%26lc%3D%25230033cc&amp;up_scroll=no&amp;w=100%&amp;h=200" data-type="ggs-gadget" data-props="height:200;igsrc:http#58//0.gmodules.com/ig/ifr?mid=0&amp;synd=trogedit&amp;url=http%3A%2F%2Fwww.gstatic.com%2Fsites-gadgets%2Fiframe%2Fiframe.xml&amp;up_iframeURL=%2Fa%2Fmacros%2Fkstf.org%2Fs%2FAKfycbzEsLBQucXCZZJwEh9c3RYhn81uJucvz3R5vHeJ2w%2Fexec%3Fmid%3DACjPJvFOqF88RUUrqDeapp1PHF_lI3Xc3g5Hd3euTifzUYeaILmTTlMfBQ13yI_6%26bc%3Dtransparent%26f%3DArial%2C%2BVerdana%2C%2Bsans-serif%26tc%3D%2523444444%26lc%3D%25230033cc&amp;up_scroll=no&amp;w=100%&amp;h=200;mid:0;spec:http#58//www.gstatic.com/sites-gadgets/iframe/iframe.xml;up_iframeURL:/a/macros/kstf.org/s/AKfycbzEsLBQucXCZZJwEh9c3RYhn81uJucvz3R5vHeJ2w/exec?mid=ACjPJvFOqF88RUUrqDeapp1PHF_lI3Xc3g5Hd3euTifzUYeaILmTTlMfBQ13yI_6&amp;bc=transparent&amp;f=Arial,+Verdana,+sans-serif&amp;tc=%23444444&amp;lc=%230033cc;up_scroll:no;width:100%;" width="500" height="200" style="display:block;text-align:left;margin-right:auto;" class="igm"></div>

据我所知,“嘿,请将此设置为您的 HTML”方法似乎在做一些诡计以确保正确解析文档,但它陷入了 iframe 重定向的追尾效应。如果我可以提交一些 DOM 或类似的东西,这将不是问题。

有什么建议吗?这只是一种练习,看看我是否可以巧妙地使用访客评论系统,所以我可能会采取另一种方法。

*:我知道处理访问者评论的其他几种方法,但是对于应用程序域中的许多站点作者,该系统需要能够在许多站点页面上工作,而无需站点作者进行复杂的设置。最终,我将使用其他东西(可能是我今天早上发现的两个应用引擎论坛系统之一的变体),但这是对临时解决方案的快速尝试。下一个临时步骤是将这些数据保存到站点数据库并在小工具本身中布置评论。但是,小工具的大小并不令人满意 - 我宁愿将评论放在页面中,而不是放在具有自己滚动条的单独 iframe 中。

4

1 回答 1

0

首先,getEmail() 方法不适用于消费者帐户或您域外的人访问该站点时(除非您的脚本在用户访问应用程序时运行)

接下来,当您更改页面的 HTML 时,它不会立即进行更改,而是应该在下一次刷新时进行。

话虽如此,您可以做的是让您的脚本也显示评论。您可以在脚本中使用标签来显示以前的评论。

于 2012-08-14T02:21:41.063 回答