Apple, App Extension Programming Guide numaralı belgede açıkladığı gibi, herhangi bir önişlemeyi gerçekleştirmek için uzantıya bir JavaScript dosyası eklemeniz gerekir. Bu ön işlemin sonuçları, uzatmada NSExtensionItem
aracılığıyla kullanılabilir.
bu dosyanın Basit bir örnek GitHub'dan benim iOS Extension Demo projeye dahil edilir ve şöyle görünür: basitçe Mevcut sayfayla ilgili çeşitli ayrıntılar ayıklar ve completionFunction
iletir
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;
. Sonunda ExtensionPreprocessingJS
var, uzantı çerçevesinin aradığı kancadır. uzantısı olarak
türe kUTTypePropertyList
bir öğe için sorarak bir sözlükte bu değerleri alabilir:
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...
Mükemmel atamak için bu değişken kullanabilirsiniz! Projeniz inanılmaz derecede kapsamlı ve sorunumu çözmemi sağladı! Çok teşekkür ederim! – Ragazzetto
@ Tom Merhaba, ben document.body ayıklamak çalıştım ama işe yaramıyor. Bir ekran görüntüsü görüntüsü almaya çalışıyorum. Lütfen öneriniz için teşekkürler. –
@WilliamKu "çalışmıyor", yaşadığınız sorunla ilgili herhangi bir bilginiz yok. Sorun yaşıyorsanız, bazı detaylarla yeni bir soru gönderin. –