翻訳できるように、各ページにGoogle翻訳プラグインを追加しながら、iframeにいくつかのWebサイトをロードする必要があります。挿入部分のコードは次のとおりです。
<iframe onload="googleJS1(); googleJS2(); googleJS3();" class=iframe2 src=http://localhost:8888/mysitep></iframe>
<script>
function googleJS1() {
var iframe = document.getElementsByTagName('iframe')[0];
var doc = iframe.contentWindow.document;
var newScript = doc.createElement('div');
newScript.setAttribute("id", "google_translate_element");
var bodyClass = doc.getElementsByTagName('body')[0];
bodyClass.insertBefore(newScript, bodyClass.childNodes[0]);
}
function googleJS2() {
var iframe = document.getElementsByTagName('iframe')[0];
var doc = iframe.contentWindow.document;
var newScript = doc.createElement('script');
newScript.setAttribute("src", "http://translate.google.com/translate_a/element.js? cb=googleTranslateElementInit");
var bodyClass = doc.getElementsByTagName('head')[0];
bodyClass.insertBefore(newScript, bodyClass.childNodes[1]);
}
function googleJS3() {
var iframe = document.getElementsByTagName('iframe')[0];
var doc = iframe.contentWindow.document;
var newScript = doc.createElement('script');
newScript.setAttribute("src", "http://localhost:8888/mysite/google.js");
var bodyClass = doc.getElementsByTagName('head')[0];
bodyClass.insertBefore(newScript, bodyClass.childNodes[2]);
}
}
</script>
これは、iframe ターゲット URL が同じサーバー上にある限り機能します。プロキシ サーバーを設定し、すべての URL リクエストをプロキシ経由で渡す必要がある同じオリジンの制約をバイパスすることを読みました。だから私はcURLを読んで、これをテストとして試しました:
<?php
function get_data($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$test = get_data("http://www.selfridges.com");
echo $test;
?>
基本的な HTML 要素は読み込まれますが、CSS と画像は読み込まれません。また、リンクは引き続き元の URL を指しています。CSS、画像、および js をターゲット URL からプロキシにプルし、そこからページをロードして、同じドメインとポートから来たように見せ、同じオリジン ポリシーを渡す方法について、いくつかの提案が必要です。この方法で機能するためのリンクも必要です。
例えば:
main page - http://localhost:8888/proxy.php
links - http://localhost:8888/proxy.php/products/2012/shoes
他の方法や代替手段も大歓迎です。
ありがとう