0

表示可能なページの[ファイルを読み込む]ボタンをクリックすると、ダイアログをポップアップ(画像を読み込むなど)するための簡単なオンラインスニペットがあります。Chromeコンソール:スニペットコマンドでダイアログを開くことができません

this.document.getElementsByName("image")[0].click() // snippet code 

マニュアルペーストおよびコンソールで、この行を実行するには(それはダイアログが開きます)成功しているが、上記のスニペットはそれを行うことはできません。 Chromeはユーザーの呼び出しではなくダイアログを開くことを許可していないようです。だから、私はすべてのポップアップを許可するブラウザを設定しますが、結果はありません。

ファイルロードボタンが表示されている別のページでテストされています。

ありがとうございます。

A similar but different issue, solved

答えて

0

クロームではなく、ユーザーの呼び出しによってダイアログを開くことはできませんように思えます。

このステートメントが真であるかどうかをテストするスニペットを作成しました。それは間違っているようです。

  1. この答えで実行スニペットボタンをクリックします。
  2. DevToolsを開きます。
  3. Inspectをクリックし、350x150という画像をクリックします。
  4. コンソールでdocument.querySelector('img').click()を評価してください。イメージの下のテキストが増えます。
  5. スニペットから同じステートメントを実行します。テキストはインクリメントされます。

document.querySelector('img').addEventListener('click',() => { 
 
    let p = document.querySelector('p'); 
 
    p.textContent = parseInt(p.textContent) + 1; 
 
});
<img src="https://via.placeholder.com/350x150"/> 
 
<p>0</p>

考えられる解決策:

  • スニペットを実行するときは、正しいコンソールコンテキストであることを確認します。 Selecting Execution Contextを参照してください。
  • お客様の声明にthisを使用した場合、問題が発生する可能性があります。削除してください。
  • 要素にIDを追加してから、getElementsByName配列ではなくIDで参照してください。代わりにdocument.getElementById('myCustomId').click()を使用してください。 IDをHTML要素に追加してください(例: <img id="myCustomId" .../>。間違った要素を参照している可能性があります。そのため、click()を実行すると間違った結果が表示されます。

この回答にコメントを追加すると、最終的に何がうまくいかないかがわかります。

+0

ありがとうございました!不幸にも私の場合は何も成功しなかった。私は別のマシン(Win 7と10、最新のChromeバージョン)で試してみました。私はコンテキストをチェックして、一意の "myID123"にIDを変更し、接頭辞 "this"を変更しました。すべてはコンソール上で文字列.click()を手動で貼り付けることで直接動作しますが、スニペットで動かすことはできません。 スクリプトでも画像を確認しました。これは、コンソールとスニペットの両方からうまく動作します。 .click()コマンドはファイル読み込みダイアログを呼び出します。何か制限があるのか​​もしれませんか? –

+0

テストしているページにリンクすることはできますか? –

+0

これは私のサイトのCMSページです。しかし、もちろん、標準的な読み込みダイアログを呼び出すためにボタンをクリックすることによって、ファイルがロードされるべきページを使用することができます。たとえば、Google画像を試してみます。 –

関連する問題