Gre*_*reg 5 javascript ios ios-extensions
我正在制作一个可在网页上运行的简单iOS共享扩展程序.它与Pinterest没有什么不同,因为它从页面中获取某些信息.但它与Pinterest的不同之处在于,用于执行抓取的JS有时会自定义为网页域.
所以在ExtensionPreprocessingJS run()函数中,我执行以下操作来加载和执行自定义JS:
var Action = function() {};
Action.prototype = {
run: function(arguments) {
var e = document.createElement('script');
e.setAttribute('type','application/javascript');
e.setAttribute('id','my-unique-id');
e.setAttribute('src','//mydomain.com/bookmarklet?d='+document.domain);
document.body.appendChild(e);
<some code to extract results and generate JSON>
arguments.completionFunction({ <my JSON here> });
}
};
var ExtensionPreprocessingJS = new Action
Run Code Online (Sandbox Code Playgroud)
我的bookmarklet端点提供了一些JS,它从页面中找到"pinning"的相关信息.
我的问题是,这是异步发生的,而不是在我使用运行方法结束时传回结果之前
arguments.completionFunction( <my JSON here> );
Run Code Online (Sandbox Code Playgroud)
我已经尝试在调用completionFunction()之前等待结果设置,但扩展似乎将其视为未完全调用的completionFunction().也就是说,共享扩展框架的设计似乎不适应异步JS.它假设在run()函数返回后,JS的结果可用.
我是否误解了共享扩展设计,或者我是否需要寻找不同的方法来实现这一目标?我注意到Instapaper创建了一个没有原生UI的共享扩展,我想知道这是否是他们这样做的原因.
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |