0

クロムエクステンションを開発中です。それが何をするか私のクロムエクステンションは、仕事をしないでください。

:誰かがdiv要素をクリックしたときに

  1. を.split使用してPHPページ(XMLHttpRequestの)

  2. スプリットからの結果変数をデータを取得し、それは私が番号1に持っているその名前のCSSファイルを挿入する関数を呼び出すでしょう。

問題:

ボタンをクリックしても何も起こりません。これは、XMLHttpRequestの変数 "currenttheme"ではなく、変数 "newvar"を使用したときに機能します。私はそれを.toStringを使って文字列に変換しようとしました。ああ、変数に警告し、newvarとまったく同じ応答を返します。

私のコード:(ため息!)

//My XMLHttpRequest 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    user_data = xmlhttp.responseText; 
    window.user_data = user_data; 
    processdata(); 
    } 
    } 
xmlhttp.open("GET","http://localhost:8888/myphppage.php",true); 
xmlhttp.send(); 

function processdata() { 
//split result variable from PHP 
var downdata = user_data.split('|||||'); 
var installedthemes = downdata[0]; 
currenttheme = downdata[1].toString(); 
window.currenttheme = currenttheme.toString(); 
} 

function click(e) { 
    newvar = "001"; 
    //insert css - works with variable newvar but not with this one 
    chrome.tabs.insertCSS(null, 
    {file:currenttheme + ".css"}); 
    //alerting the variable works, exactly the same as newvar 
    alert (currenttheme); 
} 

document.addEventListener('DOMContentLoaded', function() { 
    var divs = document.querySelectorAll('div'); 
    for (var i = 0; i < divs.length; i++) { 
    divs[i].addEventListener('click', click); 
    } 
}); 
+0

あなたの質問に対するより良いタイトルは、より多くの回答を得るのに役立ちます。 – itsmequinn

+5

* * IE6、IE5 *のコードは、実際にはクロムエクステンションの防御プログラミングです –

答えて

0

window.user_data =のuser_data; // < - 必須ではありません。 user_data = xmlhttp.responseTextは、user_dataがこのウィンドウに対してグローバルであることを示します。 window.currenttheme = currenttheme.toString(); < < - downdataあまりにも

を必要としない[1]これが解決しない場合はそう警告(currenttheme)をしようと、

currenttheme = downdata[1]; 

currenttheme = downdata[1].toString(); 

を置き換える文字列です。時にはPHPがエラーを投げて "|||||"を生成しない可能性があるので、必要なテーマ名を取得しているかどうかを確認してください。 PHPの出力を確認して、xmlhttp.responseTextに警告して、すべてがOKかどうかを確認してください。

+0

私はそれを警告しました。余分なコードの有無にかかわらず、それは正しく警告しますが、動作しません。 –

+0

OK、すぐにPHPファイルをバックアップして、PHPファイル内に次のように追加してください: "||||| 001" ---これはPHPファイル上で唯一のものでなければなりません。 。ファイルをphpファイルとして保存し、ページを再度実行し、動作するかどうかを確認してください。また、これらのスクリプトが別々の.jsファイルに含まれている場合は、CLEAR CACHEに時間を掛けてください。 – Akshay

+0

また、ファイルを試してください:(currenttheme + ".css") – Akshay

関連する問題