Je viens de rencontrer un problème important car j'ai beaucoup de sources d'un autre domaine ce qui signifie que si j'utilise iframe, je dois redimensionner tous ces contenus. Mais le problème est que je ne peux pas modifier ou insérer du code dans la page web source. En raison de cela, je voudrais demander s'il existe d'autres solutions pour ignorer l'utilisation d'iframe? Conseils: J'ai besoin de tout le contenu (inclure des images, des css, etc.) de l'url. Ne fait pas partie du contenu.Existe-t-il une méthode pour remplacer iframe?
Répondre
La fonction include de PHP pourrait être le meilleur endroit pour commencer. Est-ce seulement le balisage que vous êtes incapable de changer, ou êtes-vous capable d'utiliser PHP et JavaScript?
EDIT:
Essayez d'utiliser include('http://www.google.com')
pour inclure une URL dans votre page sans utiliser iFrame. Les références de répertoire non absolues dans le code (comme <img src='/img.png'>
ne s'affichent pas ou ne se chargent pas correctement)
Si vous avez besoin de corriger ces références et que vous ne pouvez pas modifier le balisage lui-même, vous pouvez utiliser la fonction file_get_contents
et de modifier des choses comme ceci:
$page = file_get_contents('http://www.google.com');
$page = preg_replace('/(href|src)=([\'"])\//',"$1=$2http://google.com/",$page);
echo $page;
Merci pour vos commentaires, je ne peux pas redimensionner le contenu du iframe parce qu'il est d'un autre domaine. Et le plus important est que je ne peux pas modifier la page source.Pour que je veux remplacer l'iframe.Pourriez-vous me donner plus d'informations ou comme un exemple de code.Merci – xiaohang
Par ailleurs, il n'est pas un fichier php, il s'agit d'une certaine URL telle que http://www.google.com – xiaohang
Vous pouvez inclure des URL avec la fonction d'inclusion de PHP. Essayez 'include" http://www.google.com ";'. cela ne fonctionne pas, vous devrez peut-être modifier la variable 'allow_url_include' de votre fichier php.ini Si vous avez besoin de modifier le contenu de la page affichée à l'URL, vous pouvez utiliser PHP [file_get_contents] (http: // php.net/manual/fr/function.file-get-contents.php) functi sur et modifier les données renvoyées. –
idée rapide - vous pouvez essayer d'écrire un proxy côté serveur et servir le contenu dans le iframe, mais src pointant vers la page proxy au lieu de la page réel (contrôlée avec les paramètres transmis)
Merci beaucoup. De cette façon, je dois encore changer quelque chose dans la page source. Mais comme ce projet. c'est impossible de faire ça. Est-ce une autre solution? – xiaohang
Je ne suis pas sûr de comprendre vos besoins. Quels changements dans la page source nécessiteront la solution avec proxy? – Marek
Effectuez un appel AJAX à l'aide du type de données JSONP rn le contenu de l'autre page. Vous devrez cependant apporter des modifications au code sur les deux domaines pour que cela fonctionne. http://en.wikipedia.org/wiki/JSONP
Merci.Le problème est que je ne peux pas modifier le code dans le domaine source ... – xiaohang
jQuery Charger dans un div http://api.jquery.com/load/
Autre domaine - donc à moins d'utiliser CORS, pas possible – mplungjan
ouais. C'est la partie la plus difficile à gérer pour moi. Je pense ne pas utiliser javascript, à la place je veux penser à utiliser PHP curl, par exemple, pour le slove. – xiaohang
Oui, créez un proxy et incluez les fichiers sur le serveur. – mplungjan
réponse modifiée de @beanland, mon /proxy.php fichier, avec la mise en cache:
$host = parse_url($_GET['url'], PHP_URL_HOST);
$dir = $_SERVER[DOCUMENT_ROOT].'/cache_proxy/'.$host;
if(!is_dir($dir))
mkdir($dir);
$filepath = $dir.'/'.md5($_GET['url']);
if(is_file($filepath)){
include($filepath);
}else{
$page = file_get_contents($_GET['url']);
$page = preg_replace('/(a href)=[\'\"](http.*)[\'\"]/', '$1="http://buy/proxy.php?url=$2"', $page);
$page = preg_replace('/(a href)=[\'"][^http](.*)[\'"]/', '$1="http://buy/proxy.php?url=http://'.$host.'/$2"', $page);
$page = preg_replace('/(href|src)=[\'"][^http+](.*)[\'"]/', '$1="http://'.$host.'/$2"', $page);
file_put_contents($filepath, $page);
echo $page;
}
d'abord remplacer tous les <a href="">
liens vers votre proxy, remplacer tous les <img src="/path...">
par rapport absolu <img src="http://...">
- 1. Comment remplacer une méthode?
- 2. Utiliser une catégorie pour remplacer NSURL méthode
- 3. Remplacer IFrame avec div
- 4. Comment remplacer une méthode générique
- 5. Android WebView iframe - Remplacer src
- 6. méthode JQuery pour la fonctionnalité IFrame
- 7. Remplacer une méthode utilisant une classe partielle
- 8. Comment remplacer iframe à div?
- 9. Remplacer méthode
- 10. méthode blackberry pour remplacer les chaînes?
- 11. comment remplacer une méthode d'une classe héritée
- 12. Comment remplacer une méthode java de groovy
- 13. Remplacer une méthode en utilisant Roslyn
- 14. extraire et remplacer (YouTube SEULEMENT) Iframe src
- 15. Remplacer une méthode de classe sans héritage
- 16. aucune méthode appropriée trouvée pour remplacer C#
- 17. Comment remplacer une méthode php in situ
- 18. Peut-on remplacer une méthode statique
- 19. Comment remplacer une méthode de ruby lib?
- 20. Remplacer une méthode virtuelle interne protégée C#
- 21. Comment remplacer une méthode sans perdre l'original?
- 22. Comment remplacer l'objet document d'une fenêtre/iframe
- 23. méthode d'interface PHP Remplacer
- 24. Java. Remplacer méthode
- 25. Comment remplacer les styles dans Iframe?
- 26. Remplacer le message d'alerte d'un IFrame?
- 27. Javascript remplacer la méthode, remplacer par "$ 1"
- 28. Comment remplacer une méthode dans une sous-classe?
- 29. Comment remplacer la méthode OnDraw?
- 30. Comment remplacer textDidChange: méthode correctement?
J'espère que l'autre domaine est correct avec vous en utilisant ses données. – epascarello
Oui. Je ne suis pas un hack ((: je déteste le client car ils ne veulent pas que je modifie leur code .Mais si c'est vraiment impossible je vais négocier avec eux – xiaohang