0

言語の方向(左から右または右から左。他の方向はウィキペディアには存在しません)のリストを、ウィキペディアの接頭辞(en、fr、es、…)で作成しようとしています。そのために、このページで実行でき、データを変数に格納するJSコードを作成しました。<html>このコードは、各ウィキペディアのメインページを開き、その要素の「dir」属性に従って言語の方向をチェックしようとします。ただし、各ウィキペディアには異なるドメインがあるため、セキュリティ上の理由から、ブラウザーはこのデータへのアクセスを許可しません。そうするブラウザはありますか?設定を変更して有効にすることはできますか?

PSコード:

var as = document.querySelectorAll('a.extiw'), pre, win, dirByPre = {};
for each (var a in as)
   if (pre = /^http:\/\/(\w+)\.wikipedia\.org\/wiki\/$/.exec(a.href)) {
      win = open(pre[0]);
      win.onload = function () {
         opener.dirByPre[pre[1]] = document.documentElement.dir;
         close();
      };
   }

どうもありがとう!

4

3 に答える 3

0

これは、最近のブラウザでは一般的に許可されていない理由があります。任意のJavaScriptが他のドメインへのアクセスを許可されている場合に存在する多くのセキュリティ問題があります。1つの例は、XSS(クロスサイトスクリプティング)です。

ブラウザでスクリプトを実行しようとしていなければ、実行しようとしていることははるかに簡単です。Python、Ruby、またはその他のスクリプト言語は、実際には、個々のHTTPリクエストを使用してこれを簡単に行うことができます。JavaScriptを知っているなら、Node.JSはどうですか?

于 2012-08-21T23:07:51.477 に答える
0

これは奇妙な解決策かもしれませんが、クロスドメインリクエストを行うことができるブラウザ拡張機能を作成することができます。Javascriptを介してクロスドメインリクエストを行うことができるX-Domainアドオンを備えたCrossriderなどの拡張機能を開発する簡単な方法があります。

于 2012-08-21T23:12:54.693 に答える
0

発生しているのは、Access ControlAllowOriginエラーです。それを読んでください、アクセス制御は、によって許可されていないオリジンを許可します。

一般に、JSで使用するために別のページのデータにアクセスする場合は、自分のサーバーでアクセスし、それをJavascriptに渡す必要があります。

ただし、この場合の最善の解決策は、代わりにAPIを介してウィキペディアにアクセスし、JSONP応答を要求することです。ウィキペディアはMediaWikiに基づいて構築されているため、そのAPIドキュメントhttp://www.mediawiki.org/wiki/API:Main_pageを参照してください。

title = "List_of_Wikipedias"; 

$.getJSON("http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&titles="+title+"&format=json&callback=?", function(data) {
    console.log(data);
})

「format=json」と「callback=?」に注意してください。

このJSONPアプローチは、最新のすべてのブラウザーで機能します。

于 2012-08-21T23:17:15.290 に答える