0

設定: これまで、クライアント JavaScript タグが任意のドメインの任意の Web ページで機能するように、JavaScript src を介していくつかの既知の GET 変数を正常に渡すことができました。

<script id="gbScript" type="text/javascript" src="http://www.mydomain.com/myremoteapp/scripts/gb.js?clientid=50&domain=someclientdomain.com"></script>

しかし、ソース URL にもう 1 つの変数を追加する必要があり、クライアントのブラウザーにある URL から変数を取得する必要があります。

たとえば、次の Web ページ アドレスから「p」の値を取得する必要があります: http://www.yourwebsite.com/?p=2

...そして、次のように、クライアント スクリプトの url 変数文字列に追加します。

<script id="gbScript" type="text/javascript" src="http://www.mydomain.com/myremoteapp/scripts/gb.js?clientid=50&domain=someclientdomain.com&p=2"></script>

制限: サーバー側のコードを使用できません。これは、クライアントがこのスクリプトを php ページ、aspx ページ、または単純な古い html ページに追加するかどうかわからないためです。

試したこと: 2 つの連続したスクリプトを試しました。最初は変数を作成し、次にその変数を 2 番目のスクリプトに渡そうとしました。

<script type="text/javascript">var url = escape(window.location);</script>
<script id="gbScript" type="text/javascript" src="http://www.mydomain.com/myremoteapp/scripts/gb.js?clientid=50&domain=someclientdomain.com&p="+url+></script>

残念ながら、スクリプト タグの src 部分は、javascript 変数を尊重または認識していないようです。また、スクリプトが使用するリモートまたはホストされたページ( php) では、クライアントの URL はまったく表示されず、クライアント アドレスの URL 変数はほとんど表示されません。

解決済み: リモート gb.js スクリプト コードに、以下を追加しました。

var clientLocation = window.location;

これにより、必要に応じて解析できる URL 全体が得られます。

4

3 に答える 3

0

これは私がGETパラメータを処理するために使用するものです:

  get_query_values: () ->
    vars = {}
    if window.location.href.indexOf('?') <= 0
      return vars
    hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&')
    for i in [0..hashes.length - 1]
      hash = hashes[i].split('=')
      vars[hash[0]] = hash[1]

    return vars

それはcoffeescriptにありますが、何が起こっているかがわかります:)

を呼び出すとquery_values = get_query_values()、オブジェクトが取得されます。URL でオブジェクトを使用するには、次のように使用しますdecodeURIComponent($.param(query_values))

于 2013-08-13T15:21:58.333 に答える
0

わかりました、みんなありがとう。スクリプトはリモートでホストされていますが、次のことができることがわかりました。

var clientLocation = window.location;

alert(clientLocation);

...それを gb.js スクリプトに追加すると、クライアントのブラウザの正しいアドレスが表示されます。

" http://www.yourwebsite.com/?p=2 "

したがって、クライアント スクリプトを変更する必要はありません。

于 2013-08-13T15:32:09.553 に答える