هل يمكنني إجبار جميع الروابط بمعالجة WebView (أو الإطار) كمسارات مطلقة؟

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

سؤال

لذلك أنا أعمل مع WebKit - WebView وإلكترونيا. يمكنني استخدام NSurLProtocol مخصص لاسترداد HTML لكل طلب من قاعدة بيانات. تنشأ المشكلة من حقيقة أن الروابط في أتش تي أم أل كلها نسبة نسبية، عندما يجب أن تكون حقا مطلقة. على سبيل المثال، الصفحة

foo/bar.html

قد يكون لديك رابط في ذلك يشير إلى

foo/baz.html

المشكلة هي أنه نظرا لأن الرابط قريب، ينتهي الطلب يجري

/foo/foo/baz.html

حتى الآن، حاولت أن أعمل بهذا من خلال مقارنة عناوين URL وتقليد البادئة المشتركة - في هذه الحالة "FOO /" - تاركيني مع Foo / Baz.html. هذا لا يعمل لجميع الاحتمالات، خاصة عندما يكون هناك أدلة متعددة في المسار. أقوم بذلك في "didstartprovisionalloadframe:" طريقة frameloaddelegate الخاص بي.

لسوء الحظ، ليس لدي سيطرة على HTML الذي أعرضه، لذلك تعديل الارتباطات بأنها ليست خيارا.

هل كانت مفيدة؟

المحلول

حاول أن تكون مندوب تحميل الموارد الإطار الرئيسي، والتنفيذ webView:resource:willSendRequest:redirectResponse:fromDataSource: لتعديل عنوان URL الذي يتم طلبه. يرسل relativeString إلى عنوان URL الخاص بالطلب للحصول على عنوان URL النسبي الأصلي، ثم استخدم -[NSURL initWithString:baseURL:] لإنشاء عنوان URL جديد مع نفس السلسلة النسبية مقابل عنوان URL الأساسي الصحيح.

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