Maison interface Web js tutoriel Explication détaillée et code d'implémentation de l'interaction entre javascript et IOS ObjectC

Explication détaillée et code d'implémentation de l'interaction entre javascript et IOS ObjectC

Mar 23, 2017 pm 03:00 PM

Cet article présente principalement l'explication détaillée et le code d'implémentation de l'interaction entre IOS OC et js Les amis dans le besoin peuvent se référer à

Explication détaillée de l'interaction entre IOS. OC et js

Injection JS : injecter du code JS avec OC dans la page Web

L'injection JS est également appelée l'interaction entre OC et JS

L'interaction OC et JS nécessite un pont (intermédiaire), qui est la méthode proxy de UIWebView

La page Web charge le contenu initial

#import "ViewController.h"

@interface ViewController ()<UIWebViewDelegate>

@property (weak, nonatomic) IBOutlet UIWebView *webView;

@end
- (void)viewDidLoad {
  [super viewDidLoad];
  // 设置webView的代理
  self.webView.delegate = self;

  // 加载网页数据
  NSURL *URL = [NSURL URLWithString:@"http://m.dianping.com/tuan/deal/5501525"];
//  NSURL *URL = [NSURL URLWithString:@"https://www.hao123.com/?tn=93321723_hao_pg"];
  NSURLRequest *request = [NSURLRequest requestWithURL:URL];
  [self.webView loadRequest:request];
}
Copier après la connexion

Utilisez js dans la méthode proxy de UIWebView pour changer la page Web native

/// 网页加载完成之后调用的代理方法 : JS注入 : OC调用JS代码
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
  // 用于拼接JS代码的字符串
  NSMutableString *stringM = [NSMutableString string];

  // 拼接移除顶部导航的JS代码
  [stringM appendString:@"var headerTag = document.getElementsByTagName(&#39;header&#39;)[0]; 
  headerTag.parentNode.removeChild(headerTag);"];
  // 拼接移除橙色按钮的JS代码
  [stringM appendString:@"var footerBtnTag = document.getElementsByClassName(&#39;footer-btn-fix&#39;)[0]; 
  footerBtnTag.parentNode.removeChild(footerBtnTag);"];
  // 拼接移除底部布局的JS代码
  [stringM appendString:@"var footerTag = document.getElementsByClassName(&#39;footer&#39;)[0]; 
  footerTag.parentNode.removeChild(footerTag);"];
  // 拼接给img标签添加点击事件的JS代码
  [stringM appendString:@"var imgTag = document.getElementsByTagName(&#39;figure&#39;)[0].children[0]; 
  imgTag.onclick = function(){window.location.href=&#39;https://www.baidu.com&#39;};"];

  // 这个方法就是UIWebView提供的.专门做JS注入的方法
  [webView stringByEvaluatingJavaScriptFromString:stringM];
}
Copier après la connexion

Interception du saut de page Web de demande de réseau natif

imgTag.onclick = function(){window.location.href=&#39;https://www.baidu.com‘}
Copier après la connexion

Lorsque vous cliquez sur imgTag, envoyez activement des requêtes réseau

Le but de l'envoi actif de requêtes réseau : est de permettre à UIWebView d'intercepter mon URL personnalisée

Utiliser l'URL personnalisée pour déterminer/distinguer si l'étiquette sur laquelle j'ai cliqué est celle que j'ai conçue

URL personnalisée et unique, indiquant que le clic est un label unique

En résumé, c'est deux étapes

La première étape : JS injecte l'événement de clic de l'étiquette et envoie activement une demande d'URL personnalisée

Étape 2 : Dans UIWebView, interceptez la demande d'URL personnalisée, puis déterminez la demande

JS indirectement appelle OC : interaction JS et OC

La méthode proxy appelée lorsque la page Web est sur le point de commencer à se charger : peut intercepter toutes les requêtes réseau sur la webView

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
  // 获取拦截到的所有的请求
  NSString *URLString = request.URL.absoluteString;
  //https://m.baidu.com/?from=1015143h
  //  NSLog(@"%@",URLString);

  if ([URLString isEqualToString:@"https://m.baidu.com/?from=1015143h"]) {
    NSLog(@"我点击的是imgTag");

    // 当我知道点击的是imgTag时,自动push
    //http://www.csdn.net/

    NSURL *URL = [NSURL URLWithString:@"http://www.csdn.net/"];
    NSURLRequest *request = [NSURLRequest requestWithURL:URL];
    [self.webView loadRequest:request];
//    TestViewController *testVC = [[TestViewController alloc] init];
//    [self.navigationController pushViewController:testVC animated:YES];

    // 因为这个地址是无效地址.不需要加载的
    return NO;
  }

  // 返回YES的作用 : 表示你拦截到的请求,允许正常的发送出去;反之,不允许拦截到的请求发送出去
  return YES;
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La première version d'iOS 18 d'Apple a été exposée à de nombreux bugs : fièvre grave, retard de WeChat La première version d'iOS 18 d'Apple a été exposée à de nombreux bugs : fièvre grave, retard de WeChat Jun 13, 2024 pm 09:39 PM

La WWDC annuelle est terminée et iOS18 est sans aucun doute au centre de toutes les attentions. Actuellement, de nombreux utilisateurs d’iPhone se précipitent pour passer à iOS18, mais divers bugs du système mettent les gens mal à l’aise. Certains blogueurs ont déclaré qu'il fallait être prudent lors de la mise à niveau vers iOS18 car "il y a tellement de bugs". Le blogueur a déclaré que si votre iPhone est votre machine principale, il est recommandé de ne pas passer à iOS18 car la première version comporte de nombreux bugs. Il a également résumé plusieurs bugs du système actuellement rencontrés : 1. Le style d'icône de changement est bloqué, ce qui empêche l'affichage de l'icône. 2. L'animation de la largeur de la lampe de poche est souvent perdue. 3. L'application Douyin ne peut pas télécharger de vidéos. 10 secondes. 5. Parfois, le téléphone ne peut pas être connecté et l'écran est noir. 6. Forte fièvre.

Apple réédite la mise à jour iOS/iPadOS 18 Beta 4, numéro de version porté à 22A5316k Apple réédite la mise à jour iOS/iPadOS 18 Beta 4, numéro de version porté à 22A5316k Jul 27, 2024 am 11:06 AM

Merci aux internautes Ji Yinkesi, xxx_x, aux tomates frites, à Terrence et aux pilons de poulet épicés pour avoir soumis des indices ! Selon les informations du 27 juillet, Apple a réédité aujourd'hui la mise à jour iOS/iPadOS 18 Beta 4 pour les développeurs. Le numéro de version interne est passé de 22A5316j à 22A5316k. La différence entre les deux mises à jour de la version Beta 4 n'est actuellement pas claire. Les développeurs enregistrés peuvent ouvrir l'application « Paramètres », accéder à la section « Mise à jour du logiciel », cliquer sur l'option « Mise à jour bêta », puis basculer les paramètres bêta du développeur iOS18/iPadOS18 pour sélectionner la version bêta. Le téléchargement et l'installation de la version bêta nécessitent un identifiant Apple associé à un compte développeur. Signalé le 24 juillet, iO

Apple publie le package Swift open source pour le cryptage homomorphe, déployé dans iOS 18 Apple publie le package Swift open source pour le cryptage homomorphe, déployé dans iOS 18 Jul 31, 2024 pm 01:10 PM

Selon l'actualité du 31 juillet, Apple a publié hier (30 juillet) un communiqué de presse annonçant le lancement d'un nouveau package Swift open source (swift-homomorphic-encryption) permettant le cryptage homomorphe dans le langage de programmation Swift. Remarque : Le chiffrement homomorphe (HE) fait référence à un algorithme de chiffrement qui satisfait aux propriétés d'opération homomorphe du texte chiffré. Autrement dit, une fois les données chiffrées de manière homomorphe, des calculs spécifiques sont effectués sur le texte chiffré et les résultats de calcul du texte chiffré obtenus sont traités en même temps. Le texte en clair après le décryptage de l'état équivaut à effectuer directement le même calcul sur les données en texte en clair, obtenant ainsi « l'invisibilité » des données. La technologie de cryptage homomorphe peut calculer les données cryptées sans divulguer les données non cryptées sous-jacentes au processus opérationnel.

Mise à jour | Hacker explique comment installer Epic Games Store et Fortnite sur iPad en dehors de l'UE Mise à jour | Hacker explique comment installer Epic Games Store et Fortnite sur iPad en dehors de l'UE Aug 18, 2024 am 06:34 AM

Mise à jour : Saunders Tech a mis en ligne un didacticiel sur sa chaîne YouTube (vidéo intégrée ci-dessous) expliquant comment installer Fortnite et Epic Games Store sur un iPad en dehors de l'UE. Cependant, non seulement le processus nécessite des versions bêta spécifiques d'iO

Nouvelles fonctionnalités de l'application iOS 18 « Boundless Notes » d'Apple : fonctionnalité de scènes étendue, introduction de l'alignement de la grille Nouvelles fonctionnalités de l'application iOS 18 « Boundless Notes » d'Apple : fonctionnalité de scènes étendue, introduction de l'alignement de la grille Jun 02, 2024 pm 05:05 PM

Selon l'actualité du 1er juin, le média technologique AppleInsider a publié aujourd'hui un article de blog indiquant qu'Apple lancerait une nouvelle fonction de navigation « Scènes » pour l'extension d'application « Freeform » dans le système iOS18 et ajouterait de nouvelles options d'alignement des objets. Introduction à l'application « Wubianji » Tout d'abord, présentons brièvement l'application « Wubianji ». L'application sera lancée en 2022 et a actuellement lancé les versions iOS, iPadOS, macOS15 et visionOS. L’introduction officielle d’Apple est la suivante : « Boundless Notes » est un excellent outil pour transformer l’inspiration en réalité. Esquissez des projets, concevez des tableaux d'ambiance ou lancez un brainstorming sur un canevas flexible prenant en charge presque tous les types de fichiers. Avec iCloud, tous vos tableaux

Sortie de la version Apple iOS 17.5 RC : permet aux utilisateurs d'iPhone de l'UE de télécharger des applications à partir du site Web Sortie de la version Apple iOS 17.5 RC : permet aux utilisateurs d'iPhone de l'UE de télécharger des applications à partir du site Web May 08, 2024 am 09:30 AM

[Cliquez ici pour accéder directement au didacticiel de mise à niveau] Selon les informations du 8 mai, Apple a proposé aujourd'hui la mise à jour iOS17.5RC (numéro de version interne : 21F79) aux utilisateurs d'iPhone. Cette mise à jour est effectuée 70 jours après la dernière version. Comment mettre à niveau la version de développement iOS/iPadOS/watchOS/macOS et la version bêta publique ? Pour mettre à niveau la version préliminaire du développeur iOS/iPadOS17 et la version bêta publique, vous pouvez vous référer à l'expérience partagée par vos amis : Experience Post 1||Experience Post 2||Experience Post 3||Experience Post 4. À partir de iOS/iPadOS 16.4 Developer Preview Beta 1, vous devez vous inscrire au programme pour développeurs Apple. Après l'inscription, ouvrez le système [Paramètres] [Mise à jour du logiciel] pour voir l'option de mise à niveau. Veuillez noter que votre iPhone ou IP

Apple iOS/iPadOS 18 Developer Preview Beta 4 publié : ajout de fonds d'écran CarPlay, options de paramètres triées, contrôle amélioré de la caméra Apple iOS/iPadOS 18 Developer Preview Beta 4 publié : ajout de fonds d'écran CarPlay, options de paramètres triées, contrôle amélioré de la caméra Jul 24, 2024 am 09:54 AM

Merci aux internautes Spicy Chicken Leg Burger, Soft Media New Friends 2092483, Handwriting Past, DingHao, Xiaoxing_14, Wowotou Eat Big Kou, Feiying Q, Soft Media New Friends 2168428, Slades, Aaron212, Happy Little Hedgehog, Little Earl, Clues for the small chat de lait qui mange du poisson ! [Cliquez ici pour accéder directement au didacticiel de mise à niveau] Selon les informations du 24 juillet, Apple a proposé aujourd'hui la mise à jour Beta4 de la version préliminaire du développeur iOS/iPadOS18 (numéro de version interne : 22A5316j) aux utilisateurs d'iPhone et d'iPad. Cette mise à jour est 15 jours après la mise à jour. dernière version. Carplay Wallpaper Apple a ajouté des fonds d'écran à CarPlay, couvrant les modes clair et sombre. Son style de fond d'écran est similaire à celui de l'iPhone.

Le projecteur Haqu K2 met la passion et les rêves olympiques à portée de main Le projecteur Haqu K2 met la passion et les rêves olympiques à portée de main Jul 24, 2024 pm 01:34 PM

Lors de la finale de la Coupe d'Europe qui vient de se terminer, avez-vous encouragé follement l'équipe que vous souteniez ? Lors des prochains Jeux Olympiques de Paris, avez-vous également hâte de capturer parfaitement les moments forts de chaque événement ? Parmi eux, disposer d’un équipement de visualisation de haute qualité est crucial. Le projecteur Haqu K2 est à juste titre un bon choix pour visionner des jeux en raison de son coût élevé et de ses excellentes performances. Il offre non seulement une luminosité élevée et une qualité d'image claire, mais offre également une expérience visuelle immersive, donnant l'impression que chaque moment passionnant du jeu est à portée de main. Etes-vous déjà attiré par un tel appareil ? Cela vous permettra certainement de profiter de la passion et des rêves des Jeux Olympiques chez vous. Le point fort le plus intime du Haqu K2 est son super réglage de l'angle à 210°, qui permet de regarder des films facilement, que ce soit au plafond ou au mur.

See all articles