Vì Apple giải thích trong số App Extension Programming Guide của mình, bạn cần bao gồm tệp JavaScript trong phần mở rộng để thực hiện bất kỳ quá trình tiền xử lý nào. Kết quả của quá trình tiền xử lý đó có sẵn thông qua số NSExtensionItem
trong phần mở rộng.
Một ví dụ đơn giản của tập tin này được bao gồm trong dự án iOS Extension Demo tôi tại GitHub và trông như thế này:
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;
Đó chỉ đơn giản là chiết xuất chi tiết khác nhau về trang hiện tại và vượt qua họ để completionFunction
. Các ExtensionPreprocessingJS
var ở cuối là móc mà khung mở rộng tìm kiếm.
Trong phần mở rộng bạn có thể lấy các giá trị trong một cuốn từ điển bằng cách yêu cầu một mục kiểu kUTTypePropertyList
:
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...
Nguồn
2014-12-11 19:04:41
Tuyệt vời !! Dự án của bạn vô cùng toàn diện và giúp tôi giải quyết vấn đề của mình !! Cảm ơn bạn rất nhiều !! – Ragazzetto
@Tom Xin chào, tôi đã cố trích xuất document.body nhưng nó không hoạt động. Tôi đang cố gắng để có được một hình ảnh chụp màn hình. Xin vui lòng tư vấn, cảm ơn trước. –
@WilliamKu "không hoạt động" không có bất kỳ thông tin nào về loại vấn đề bạn đang gặp phải. Nếu bạn gặp sự cố, hãy đăng câu hỏi mới với một số chi tiết. –