هل من الممكن استخدام StringByevaluatuerJavascriptFromString مع JavaScript التي تشير إلى الملفات المحلية؟

StackOverflow https://stackoverflow.com/questions/1893715

سؤال

أريد استخدام 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];

آمل أن يحل هذا المشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top