Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法引用字符串-带Chrome的本地化_Javascript_Jquery_Html_Google Chrome Extension - Fatal编程技术网

Javascript 无法引用字符串-带Chrome的本地化

Javascript 无法引用字符串-带Chrome的本地化,javascript,jquery,html,google-chrome-extension,Javascript,Jquery,Html,Google Chrome Extension,我有一个问题,下面的代码,它不能引用字符串我指出的代码太多 var text = chrome.i18n.getMessage('application_text'); if ($('#multi_select option:selected').text() == text) { //If text equals "MY TEXT" } else { } HTML 基本上,对文本的引用不正常。如果我对字符串进行硬编码,…text()=“MY text”)则可以工作,但是从本地

我有一个问题,下面的代码,它不能引用字符串我指出的代码太多

var text = chrome.i18n.getMessage('application_text');

if ($('#multi_select option:selected').text() == text) {

    //If text equals "MY TEXT"

} else {

}
HTML


基本上,对
文本的引用不正常。如果我对字符串进行硬编码,
…text()=“MY text”)
则可以工作,但是从本地化字符串引用该字符串时,代码不起作用。

我尝试了基于您的代码的演示扩展,效果很好。(如果您发布更多代码,即整个文件内容,可能有人会发现缺少的细节。)

无论如何,下面是我的演示扩展的代码(基于您的代码),它可以满足您的需要。
您可以查看它或将其与您自己的进行比较,以了解两者的不同之处

manifest.json:

{
    "manifest_version": 2,
    "name":    "Test Extension",
    "version": "0.0",
    "default_locale": "en",

    "browser_action": {
        "default_title": "Test Extension",
        "default_popup": "popup/popup.html"
    }
}
{
    "application_text": {
        "message": "MY TEXT",
        "description": "just some text"
    }
}
<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="jquery.min.js"></script>
        <script type="text/javascript" src="popup.js"></script>
    </head>
    <body>
        <select id="multi_select" name="multi_select">
                <option value="1" id="multi_select_1">MY TEXT</option>
                <option value="2" id="multi_select_2">YOUR TEXT</option>
                <option value="3" id="multi_select_3">OTHER TEXT</option>
        </select>
    </body>
</html>
$(document).ready(function() {
    var text = chrome.i18n.getMessage('application_text');
    $('#multi_select').on("change", function() {
        if ($('#multi_select option:selected').text() == text) {
            console.log("True");
        } else {
            console.log("False");
        }
    });
});
messages.json:

{
    "manifest_version": 2,
    "name":    "Test Extension",
    "version": "0.0",
    "default_locale": "en",

    "browser_action": {
        "default_title": "Test Extension",
        "default_popup": "popup/popup.html"
    }
}
{
    "application_text": {
        "message": "MY TEXT",
        "description": "just some text"
    }
}
<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="jquery.min.js"></script>
        <script type="text/javascript" src="popup.js"></script>
    </head>
    <body>
        <select id="multi_select" name="multi_select">
                <option value="1" id="multi_select_1">MY TEXT</option>
                <option value="2" id="multi_select_2">YOUR TEXT</option>
                <option value="3" id="multi_select_3">OTHER TEXT</option>
        </select>
    </body>
</html>
$(document).ready(function() {
    var text = chrome.i18n.getMessage('application_text');
    $('#multi_select').on("change", function() {
        if ($('#multi_select option:selected').text() == text) {
            console.log("True");
        } else {
            console.log("False");
        }
    });
});
popup.html:

{
    "manifest_version": 2,
    "name":    "Test Extension",
    "version": "0.0",
    "default_locale": "en",

    "browser_action": {
        "default_title": "Test Extension",
        "default_popup": "popup/popup.html"
    }
}
{
    "application_text": {
        "message": "MY TEXT",
        "description": "just some text"
    }
}
<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="jquery.min.js"></script>
        <script type="text/javascript" src="popup.js"></script>
    </head>
    <body>
        <select id="multi_select" name="multi_select">
                <option value="1" id="multi_select_1">MY TEXT</option>
                <option value="2" id="multi_select_2">YOUR TEXT</option>
                <option value="3" id="multi_select_3">OTHER TEXT</option>
        </select>
    </body>
</html>
$(document).ready(function() {
    var text = chrome.i18n.getMessage('application_text');
    $('#multi_select').on("change", function() {
        if ($('#multi_select option:selected').text() == text) {
            console.log("True");
        } else {
            console.log("False");
        }
    });
});

代码从何处运行(后台页面,contet脚本)?您是否尝试过在if语句上放置断点,以查看执行条件时文本中的内容?另外:消息文本在哪个目录中,文件名如何?@ExpertSystem代码在my Popup.js而不是background.js中运行,至于message.json,它存储在_locales/en/messages中。json@JaisonBrooks你解决这个问题运气好吗?如果你觉得我的答案指向正确的方向,考虑把它标记为被接受,这样在将来面对类似问题的用户将能够认识到它是有用的(不必阅读评论等)。