如何传递参数给evaluateJavaScript函数
How to pass an argument to evaluateJavaScript function?
for (int i = 0; i < centerPointsList.size (); i++)
{
QVariant holdInformation = map->page ()->mainFrame ()->evaluateJavaScript (QString ("constructFileName (%1).arg (centerPointsList[0].toFloat())"));
QList <QVariant> allListObj = holdInformation.toList ();
QList <QVariant> fileNamesList = allListObj[0].toList ();
std :: cout << fileNamesList[0].toFloat() << "================= n";
}
结果是:
"SyntaxError: Parse error on line:1 Source:undefined"
段错误
我猜错误是在我将列表项传递给函数evaluateJavaScript
的方式。
我试过了:
for (int i = 0; i < centerPointsList.size (); i++)
{
QVariant holdInformation = map->page ()->mainFrame ()->evaluateJavaScript (QString ("constructFileName (%1)").arg (centerPointsList [0].toFloat ()));
导致:
"TypeError: Result of expression 'centerPointFileName. "Split ' [undefined]不是一个函数。来源:file:///…/index.html"
函数constructFileName
(在Javascript中)如下:
function constructFileName (centerPointFileName)
{
var removeSpaces = centerPointFileName.split (" ");
var fileNameWithoutSpaces = "", i;
for (i = 0; i < removeSpaces.length; i++)
fileNameWithoutSpaces = fileNameWithoutSpaces + removeSpaces [i];
根据您的更新,您的JavaScript函数需要字符串参数。最简单的方法应该是这样的:
QString info = QString("constructFileName('%1')").arg(centerPointsList[i].toFloat());
QVariant holdInformation = map->page()->mainFrame()->evaluateJavaScript(info);
然而,一般来说,这不是完全安全的-如果插入的参数%1
包含反斜杠,双引号或其他特殊符号,它们需要首先转义。我不能评论应该怎么做,因为我从来没有使用过Qt:)
相关文章:
- 没有找到相关文章