正如Apple在其App Extension Programming Guide中所解釋的那樣,您需要在擴展中包含JavaScript文件以執行任何預處理。預處理的結果可通過NSExtensionItem
在擴展中找到。
這個文件的一個簡單的例子包括在GitHub上我iOS Extension Demo項目,看起來像這樣:
var MyPreprocessor = function() {};
MyPreprocessor.prototype = {
run: function(arguments) {
arguments.completionFunction({"URL": document.URL, "pageSource": document.documentElement.outerHTML, "title": document.title, "selection": window.getSelection().toString()});
}
};
var ExtensionPreprocessingJS = new MyPreprocessor;
,簡單地提取有關當前頁面的各種細節,並把它們傳遞給completionFunction
。最後的var是最後一個變量,它是擴展框架尋找的鉤子。該鏈接
for (NSExtensionItem *item in self.extensionContext.inputItems) {
for (NSItemProvider *itemProvider in item.attachments) {
if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypePropertyList]) {
[itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypePropertyList options:nil completionHandler:^(NSDictionary *jsDict, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
NSDictionary *jsPreprocessingResults = jsDict[NSExtensionJavaScriptPreprocessingResultsKey];
// Continue with data returned from JS...
太棒了! 您的項目令人難以置信的全面,讓我解決了我的問題! 非常感謝你! – Ragazzetto 2014-12-11 22:14:22
@Tom嗨,我試圖提取document.body,但它不起作用。我正在嘗試獲取屏幕截圖。請提前告知,謝謝。 – 2015-10-15 02:19:54
@WilliamKu「不起作用」並沒有任何關於您遇到的問題的信息。如果遇到問題,請提供一些新的問題,並提供一些細節。 – 2015-10-15 03:23:22