在圣诞节期间,我实现了一些代码来使用通道 API 打开我的 App Engine 应用程序的通道,并且运行良好。
最近回了代码,发现坏了,问题似乎出在talkgadget上,客户端代码试图加载到frame中。
我在 12 月 21 日对 /_ah/channel/jsapi 返回的代码进行了快照,并将其与今天的代码进行比较。
当旧版本尝试获取talkgadget.google.com/talkgadget/d?token=[my-token] 时,它被硬编码为使用http。明智的是,代码后来被更改为检查 document.location 中页面的协议并适应使用 https 的情况。现在的问题是,当在 chrome 扩展中运行时,它会抓取 chrome-extension: 作为协议,并且自然通道无法在扩展中打开。
将背景页面的基础设置为我的应用程序 URL 不会更改 document.location,尽管我有一些模糊的概念认为它应该这样做。(不确定标准是怎么说的。)
有解决方法吗?一种想法是创建从我的站点加载的我自己的 iframe,但随后它将嵌套实际的频道 iframe,使事情变得复杂。
我想知道 Moish 或 App Engine 团队的其他人是否可以对此发表评论。看起来这是一个错误,代码应该通过测试协议并搜索基本标记作为替代方案,或者提供某种方式通过 javascript 对象进行配置。