如何将参数传递给evaluateJavaScript函数?
这导致: “TypeError:表达式‘centerPointFileName.split’[undefined]的结果不是函数。第65行来源:file:///.../index.html" 函数如何将参数传递给evaluateJavaScript函数?,javascript,c++,qt,qwebview,Javascript,C++,Qt,Qwebview,这导致: “TypeError:表达式‘centerPointFileName.split’[undefined]的结果不是函数。第65行来源:file:///.../index.html" 函数constructFileName(在Javascript中)如下所示: for (int i = 0; i < centerPointsList.size (); i++) { QVariant holdInformation = map->page ()->mainFram
constructFileName
(在Javascript中)如下所示:
for (int i = 0; i < centerPointsList.size (); i++)
{
QVariant holdInformation = map->page ()->mainFrame ()->evaluateJavaScript (QString ("constructFileName (%1)").arg (centerPointsList [0].toFloat ()));
函数构造函数文件名(centerPointFileName)
{
var removespace=centerPointFileName.split(“”);
var fileNameWithoutSpaces=“”,i;
对于(i=0;i
根据您的更新,JavaScript函数需要一个字符串参数。最简单的方法如下所示:
function constructFileName (centerPointFileName)
{
var removeSpaces = centerPointFileName.split (" ");
var fileNameWithoutSpaces = "", i;
for (i = 0; i < removeSpaces.length; i++)
fileNameWithoutSpaces = fileNameWithoutSpaces + removeSpaces [i];
但是,一般来说,这并不是完全安全的-如果插值参数
%1
包含反斜杠、双引号或其他特殊符号,则需要首先对其进行转义。我无法评论应该如何进行转义,因为我从未使用过Qt:)您是否在寻找QString(“constructFileName(%1)”。arg(centerPointsList[0].toFloat())
?@DCoder请查看更新。
function constructFileName (centerPointFileName)
{
var removeSpaces = centerPointFileName.split (" ");
var fileNameWithoutSpaces = "", i;
for (i = 0; i < removeSpaces.length; i++)
fileNameWithoutSpaces = fileNameWithoutSpaces + removeSpaces [i];
QString info = QString("constructFileName('%1')").arg(centerPointsList[i].toFloat());
QVariant holdInformation = map->page()->mainFrame()->evaluateJavaScript(info);