使用以下操作扩展程序,我可以在网页中获取图片网址。但是,当URL用于PDF文件时,则没有。物业清单是零。
我有以下扩展名的js文件:
var GetImage = function() {};
GetImage.prototype = {
imageURLs: function() {
var imgs = document.getElementsByTagName("img");
var imgSrcs = [];
for (var i = 0; i < imgs.length; i++) {
imgSrcs.push(imgs[i].src);
}
return imgSrcs;
},
run: function(arguments) {
arguments.completionFunction({
"currentUrl": document.URL,
"currentTitle": document.title,
"content": document.body.innerHTML,
"images": this.imageURLs(),
});
}
};
var ExtensionPreprocessingJS = new GetImage;
然后,在实际行动中:
print("step a-1")
let item : NSExtensionItem = extensionContext!.inputItems[0] as! NSExtensionItem
let itemProvider : NSItemProvider = item.attachments?.first as! NSItemProvider
let propertyList = String(kUTTypePropertyList)
if itemProvider.hasItemConformingToTypeIdentifier(propertyList) {
print("step a-2")
itemProvider.loadItemForTypeIdentifier(propertyList, options: nil, completionHandler: { (item, error) -> Void in
if (item != nil) {
print("step a-3")
}
})
}
我可以获取图片网址。但是,当页面是PDF文件的URL时,则没有。物业清单是零。
如果我尝试没有js,那么我得到了public.url。
但是,使用js,属性列表是nil ...
感谢任何帮助。 感谢
答案 0 :(得分:0)
一些事情:
NSExtensionActivationSupportsWebURLWithMaxCount
NSExtension&gt; NSExtensionAttributes&gt; NSExtensionActivationRule默认情况下将获取URL。将其设置为NSExtensionActivationSupportsWebPageWithMaxCount
以与DOM交互item
的回调中投放NSDictionary
并按如下方式访问NSExtensionJavaScriptPreprocessingResultsKey
itemProvider.loadItem(forTypeIdentifier: propertyList, options: nil, completionHandler: { (item, error) -> Void in guard let dictionary = item as? NSDictionary else { return } OperationQueue.main.addOperation { if let results = dictionary[NSExtensionJavaScriptPreprocessingResultsKey] as? NSDictionary, let urlString = results["currentURL"] as? String, } } })