我正在尝试打开要在我的Chrome扩展程序中解析的文件,例如“config.txt”。
通过Javascript它会相当容易。例如:chrome.extension.getURL('config.txt')
会得到类似chrome-extension://kfcphocilcidmjolfgicbchdfjjlfkmh/config.txt
的内容。
但是,在扩展的C ++(或C)代码中,通过这种URL打开文件是不可用的。
在这种情况下,有没有办法在扩展名中打开文件?
答案 0 :(得分:0)
有两种方法可以解决这个问题;第一种是简单地使用javascript来获取路径,然后在方法调用中将其传递给插件。
第二个是获取插件.dll文件的路径,然后计算相对于as explained on the website的config.txt的位置。
我想另一种选择是尝试使用:
m_host->getDOMWindow()->getNode("chrome")->getNode("extension")->getNode("getURL")->callMethod<FB::variant>("", FB::variant_list_of("config.txt");
我不知道这是否真的有效;我没有尝试过,我甚至可能错误地输入了一些函数调用,但它可能值得一试。
答案 1 :(得分:0)
我终于找到了通过XmlHttpRequest在我的NPAPI插件中获取“config.txt”的方法。
const char* getconfig =
" window.__config_txt__ = (function() {"
" var ret = \"Default return value\";"
" var xhr = new XMLHttpRequest();"
" xhr.open(\"GET\", \"config.txt\", false);"
" xhr.onreadystatechange = function() {"
" if(xhr.readyState == 4) {"
" ret = xhr.responseText;"
" };"
" };"
" xhr.send();"
" return ret;"
" })();";
m_host->evaluateJavaScript(getconfig);
if (window && window->getJSObject()->HasProperty("window")) {
std::string content = window->getProperty<std::string>("__config_txt__");
}