URL /アドレスバーからJavaScript関数を呼び出す


112

URLからJavaScript関数を呼び出すことはできますか?基本的に、ソースにアクセスできないページでJSメソッドを活用しようとしています。

何かのようなもの: http://www.example.com/mypage.aspx?javascript:printHelloWorld()

あなたがjavascript:alert("Hello World");アドレスバーに入れればそれはうまくいくでしょう。

これに対する答えは「いいえ」ではないかと思いますが、それを行う方法があるかどうか疑問に思いました。


3
あなたのURLはどのような振る舞いをする必要がありますか-そのサイトのコンテキストでJavaScriptを実行しますか?
ペッカ

http:URIの開始時には、HTTPはそれがない要求するので、「私はあなたがHTTPリクエストを作りたい」ブラウザに指示します。それを回避する方法はないと思います。
コンスタンティン

7
javascript:alert("Hi");Firefox(28.0)のアドレスバーに貼り付けてEnterキーを押しても、何も起こりません。多分これは無効になっていますか?...はい、明らかに馬鹿がアドレスバーに何かを貼り付けることができるため、無効になっています。こちらの情報を見つけてください:stackoverflow.com/a/18782801/111036
mivk

1
コピーと貼り付けは機能しませんが、入力すると機能し、無効ではないように見えますが、貼り付けたときに解析されます。
Bhabani Sankar Mishra

1
注:これは、Firefoxでのみ機能します。1。実際の(空ではない)ページで、2。明示的に "javascript:"をその前に配置します。
Andrew

回答:


59

ハイパーリンクからのものではありません。ページにこのためのスクリプトがあり、いくつかのパラメーターをチェックしている場合を除きますが、質問については、ブラウザーに組み込みのサポートはありません。

ただし、ブックマークバーを使用して、アドレスバーからJavaScript関数をすばやく実行できます。それがあなたのニーズを満たしているかどうかはわかりませんが、それは可能な限り近いです。


5
私は基本的に、ソースにアクセスできないページでJSメソッドを活用しようとしています。
DazManCat 2010年

27

アドレスバーに書き込む

javascript:alert("hi");

冒頭に必ず記述してください:javascript:


1
Google Chromeバージョン80.0.3987.132(公式ビルド)(64ビット)では機能しません。Chromeではjavascript:、アドレスバーからプレフィックスが自動的に削除されます。
ストーマ

2
@stomy javascript:残念ながら手動で入力する必要があります
wjandrea

24

データURIを使用できます。例えば: data:text/html,<script>alert('hi');</script>

詳細については、https//developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIsをご覧ください。


1
私はいつもデータのurlは画像のみだと思っていました。これは本当に素晴らしいです:)
Fareed Alnamrouti

2
これをURLに追加することはできません。
vivek_23、19年

:一部のブラウザでは、メッセージでこれをブロックすることがありますNavigation to toplevel data: URI not allowed (Blocked loading of: “data:text/html,<script>alert('hi');</script>”)
アレクサンドルRyabov

それは上で動作Google Chromeのバージョン80.0.3987.132(公式ビルド)(64ビット)。
ストーマ

それはChrome 80.0.3987.162 (Official Build) (64-bit)Firefox 72.0.2 (64 bit)
内外で機能

6

/test.html#alert('heello ')

test.html
<button onClick="eval(document.location.hash.substring(1))">do it</button>

13
このユーザー入力の評価は非常に危険な行為であり、通常は許可されないことに注意してください。
domenukk 2016年

6
はい、これは非常識です。このような狂気のために解雇される職場があります。
ジェイコブ

6
これにより、@ domenukkによって指摘されたクロスサイトスクリプティング(XSS)の問題が反映されます。
pavanw3b

6

次の場所に配置することもできます

<a href='javascript:alert("hello world!");'>Click me</a>

あなたのhtmlコードに、そして「クリックしてください」ハイパーリンクをクリックすると、JavaScriptがURLバーに表示され、アラートダイアログが表示されます


5
JavaScriptはどのブラウザのURLバーに表示されますか?私はそれを見たことがありません。(私はjavascriptを知っています:リンクは機能します、私は単にURLバーについて話しているだけです)
ショーン・パトリック・フロイド

私もそうではありません。アドレスバーにJSと入力できます
DazManCat

これは私が探していたものです、これは何と呼ばれていますか?
ThorSummoner 2014年

4

window.location.hashプロパティについて:

URLのアンカー部分を返します。


例1:

//Assume that the current URL is 

var URL = "http://www.example.com/test.htm#part2";

var x = window.location.hash;

//The result of x will be:

x = "#part2"

例2:

$(function(){   
    setTimeout(function(){
        var id = document.location.hash;
        $(id).click().blur();
    }, 200);
})

例3:

var hash = "#search" || window.location.hash;
window.location.hash = hash; 

switch(hash){   
case "#search":  
    selectPanel("pnlSearch");
    break;    
case "#advsearch":    

case "#admin":  

}

3

私が同じ問題を抱えていたので、エディの答えを使用すると非常にうまくいきました。パラメータを使用してURLを呼び出すだけです: "www.mypage.html#myAnchor"

次に、mypage.htmlで:

$(document).ready(function(){
  var hash = window.location.hash;
  if(hash.length > 0){
    // your action with the hash
  }
});

2

このような状況で使用できます。たとえば、ページがある http://www.example.com/page.php 場合、そのpage.phpに次のコードを挿入します。

if (!empty($_GET['doaction']) && $_GET['doaction'] == blabla ){
echo '<script>alert("hello");</script>';
}

次に、このURLにアクセスするたびに: http://www.example.com/page.php?doaction=blabla

その後、アラートが自動的に呼び出されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.