2016-12-04 4 views
0

ブックマークレットを作成していて、ページ内のコードを変更する必要があります。たとえば、ページが読み込まれた後、 'onclick'で使用される関数を作成します。私はこの関数の変数の中のコードを置き換える必要があります。例えば、ここでの関数である:Javascript関数のコードを置換する

function openNewWindow(){ 
    newWindow = window.open('http://www.example.org','params','width=200,height=200,resizable=0'); 

そして私は、このにこのコードを変更する必要があります。

function openNewWindow(){ 
    newWindow = window.open('http://www.example.org','params','_blank'); 

どのように機能がAJAXによってロードされていること、アカウントに取って、それを行うことができますか?

+0

*関数はajaxによってロードされます* - 関数宣言の内容をajaxでロードしていますか? – RomanPerekhrest

+0

ajax.phpはデータを計算した後にコードの一部を読み込みます。 – passwd

+0

そのコンテンツがバックエンド側で生成されている場合は、バックエンドで置き換えてフロントエンドに準備済みのコンテンツを取得させようとします – RomanPerekhrest

答えて

0

ファクトの後にコードのフロントエンドにしかアクセスできない場合、関数は新しいrefrenceをアサインすることによって上書きすることができます。 openNewWindowを新しい関数に置き換えることができます。

openNewWindow = function() { 
    newWindow = window.open('http://www.example.org','params','_blank'); 
} 

ただし、第三者からの機能を置き換えることは、予期しない結果を招く可能性があるため、多くの場合お勧めしません。

+0

関数のコードの一部だけを再作成する必要がある場合は、残りのコードがランダムである可能性があるためです。 – passwd

+0

コードを呼び出すための新しい関数を作成し、元の関数コードを作成することができます。コードの一部を置き換えるだけで、何かを安全な方法でやり続けることは望ましくありません( 'function.toString()'と 'eval'を避ける)。 – devilfart

+0

しかしevalの代わりに '' var ev = window [fnstring]; ''を使うことはできますか? – passwd

関連する問題