هل من الممكن استخدام StringByevaluatuerJavascriptFromString مع JavaScript التي تشير إلى الملفات المحلية؟
-
19-09-2019 - |
سؤال
أريد استخدام StringByeValuatuerJavascriptFromStromString لتشغيل JavaScript الذي يشير إلى الملفات المحلية (في هذه الملفات CSS CSS، ولكن ملفات JS المحتملة أيضا) الموجودة على الجهاز (في مجلد المستندات التي أعتقدها؟) ...
NSString *theJS = [[NSString alloc]
initWithString:@"javascript:(function()
{the_css.rel='stylesheet';
the_css.href='the_css.css';
the_css.type='text/css';
the_css.media='screen';}
)();"];
[webView stringByEvaluatingJavaScriptFromString:theJS];
كيف يمكنني الحصول على هذا للعمل؟ إنه يعمل بشكل جيد إذا كنت أستخدم ملف CSS خارجي، مثل
the_css.href='http://www.website.com/the_css.css';
المحلول
ما قمت به في الماضي يستخدم هذا الرمز عند تحميل HTML
NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:bundlePath];
[webView loadData:data MIMEType:@"text/html" textEncodingName:@"utf-8 " baseURL:baseURL];
سيؤدي ذلك إلى اجتياز موقع Bundle ك url الأساسي الذي يجب أن يتسبب في العمل بشكل صحيح. بالطبع ليس عليك استخدام هذا بالضبط loadData
الطريقة، هناك العديد من الحملات الزائدة. فقط الحصول على baseUrl
هناك ويجب أن تكون جيدة للذهاب.
إذا فشل كل شيء آخر، فيمكنك استخدام شيء مثل:
NSString *path = [[NSBundle mainBundle] pathForResource:@"file.css" ofType:nil]]
وحقن ذلك في الصفحة مع بعض بدائل السلسلة أو أيا كان. بوت هاكن على الرغم من.
نصائح أخرى
يجب أن تفعل ذلك مثل هذا.
NSString *cssPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"the_css.css"];
NSURL *baseURL = [NSURL fileURLWithPath:cssPath];
NSString *theJS = [[NSString alloc]
initWithFormat:@"javascript:(function()
{the_css.rel='stylesheet';
the_css.href='%@';
the_css.type='text/css';
the_css.media='screen';}
)();",baseURL];
[cssPath release];
[webView stringByEvaluatingJavaScriptFromString:theJS];
آمل أن يحل هذا المشكلة.