如何传递参数给evaluateJavaScript函数

How to pass an argument to evaluateJavaScript function?

本文关键字:evaluateJavaScript 函数 参数 何传递      更新时间:2023-10-16
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:)
相关文章:
  • 没有找到相关文章