1

複雑なURLからページ名を抽出しようとしています。この投稿は私がこれをやろうとしている方法です。これでページのURLを取得できますが、それを使って何かをしようとすると失敗します。これをSharePointページで使用しています。

//WORKS!
var url = window.location;
alert(url);

//ALERTS NOTHING 
//PREVENTS ALL JAVASCRIPT AFTER THIS FROM RUNNING AS WELL
var url = window.location;
var url_parts = url.split(‘/’);
var main_url = url_parts[0];
alert(main_url);
4

7 に答える 7

3

window.locationは文字列ではなく、Locationオブジェクトであり、メソッドはありませんsplit。URLの一部を取得するための多くのメソッドがありますが、それを確認したい場合は、実行しようとしていることを実行することもできます。

https://developer.mozilla.org/en/DOM/window.location

他のすべてが失敗した場合は、.toString().split...を使用できます

于 2012-06-11T20:48:02.247 に答える
1
于 2012-06-11T20:51:07.457 に答える
0

問題は、アラート方法を使用していることです。

私が言いたいのは、コードスニペットから、そしてアラートを使用して、失敗点がどこにあるかを判断するのは非常に難しいということです。

ただし、このような問題を明確にする別の方法があります。それが私の推奨事項です。これはJavaScriptステップデバッガーです。

ChromeまたはFireFoxでは、コードの行をステップ実行し、各行の値を調べて、期待どおりかどうかを判断することができます。

Chromeでのステップデバッグの手順:1。このようにデバッガキーワードを追加し、アラートをコメントアウトします。

//WORKS!
debugger;
var url = window.location;
//alert(url);

- This will instruct the debugger to pause runtime execution, so that we can see how each line executes.
  1. ウェブページにChromeが表示されている状態で、画面を右クリックして[要素の検査]を選択します。

    • これにより、Dev Toolsが開き、デバッガーが停止します。
  2. ページを更新し、コードの実行に必要となる可能性のあるイベントを呼び出します。

    • コードの実行はデバッガー行で一時停止する必要があります。
  3. 今、あなたができることは本当に強力です。ステップオーバーボタンをクリックすると、1行ずつ移動します。

    • これで、変数にカーソルを合わせると、状態が何であるかを確認できます。
  4. 私の疑惑は、url.split()がおそらく何らかの形で間違っているということです。

    • 調べてみたところ、「URLにはメソッド分割がありません」というエラーが表示されています。

    • 返されるオブジェクトは文字列ではなく場所であったため、これは理にかなっています。

  5. だから私がしたことは、場所のメンバーを調べることでした:ホスト、ホスト名、href、オリジン、パス名...

  6. 必要に応じて、そのうちの1つを分割する必要があると思います。

    • 例えば:

      var url = window.location

      var url_parts = url.href.split('/');

      //この投稿のurl_partsは//["http:"、 ""、 "stackoverflow.com"、 "questions"、 "10987267"、 "why-can-i-only-run-1-javascript-internal-function "]

お役に立てば幸いです。ではごきげんよう!ナッシュ

于 2012-06-11T21:05:15.253 に答える
0

代わりにwindow.location.hrefを使用してみてください。window.locationは、文字列ではなくオブジェクトです。 http://www.w3schools.com/jsref/obj_location.asp

于 2012-06-11T20:47:30.310 に答える
0

window.locationと呼ばれるhostまたはhostnamewindow.location.hostまたはのプロパティがあることを知っていますwindow.location.hostname。あなたはそれらを試してみるべきです。

于 2012-06-11T20:48:31.677 に答える
0

JavaScriptは現在シングルスレッドであるため、アラートはokがヒットするまで実行スレッドをブロックし、それから続行する必要があります。htnl5は一種のクールですが制限されたWebワーカーを導入しています...

問題に戻って、おそらくこれを実行したいと思うでしょう。

window.location.href.split("/")

また

window.location.pathname.split("/")

あなたが達成しようとしていることに応じて。

于 2012-06-11T20:49:05.080 に答える
-1

Try this:

extracturl = function()
{
    url1 = location.href;
    url2 = url1.split('.');
    url3 = url2[0].replace(/http:\/\//gi,'');
    return url3;
}

It worked for me. It takes something like "http://example.com/" and returns "example." (without the quotes and the period.)

于 2012-06-11T20:55:27.447 に答える