Javascript 无法在从另一个函数调用的函数中设置变量
我目前正在运行一个NodeJS文件,我收到一篇类似这样的帖子Javascript 无法在从另一个函数调用的函数中设置变量,javascript,node.js,phantomjs,screen-scraping,Javascript,Node.js,Phantomjs,Screen Scraping,我目前正在运行一个NodeJS文件,我收到一篇类似这样的帖子 app.post('/', function (req, res) { var firstLine = req.body.firstLine; var secondLine = req.body.secondLine; var previewID = req.body.previewId; takeWebshot(firstLine) return res.end('<h1>Hell
app.post('/', function (req, res) {
var firstLine = req.body.firstLine;
var secondLine = req.body.secondLine;
var previewID = req.body.previewId;
takeWebshot(firstLine)
return res.end('<h1>Hello, Secure City World!</h1>');
});
这是我在这方面的问题:
document.getElementById("user_input").value=fLine;
弗林不再读书了。我试着把弗林传给函数,就像这样fn:functionfLine。弗林现在等于成功。就我对JS的有限了解而言,函数fn:function似乎是主节点模块webshot中的承诺回调。目标是我需要
document.getElementById("user_input").value=fLine; to equal firstLine that is being sent by the other function.
编辑:webshot正在调用幻影js来打开一个无头url。我试图传递变量,以便它在调用它进行屏幕截图时可以填写表单。这就是为什么它有文档。您不能将fLine传递给fn:functionfLine,因为它是onLoadFinished的回调函数,内部无法访问变量的范围,您可以尝试fn:=>{ document.getElementByIduser\u input.value=fLine; }这可能与带“允许访问使用变量外部”函数的胖箭头函数相同。webshot的文档中提到,脚本将在传递给Phantom之前序列化 请注意,脚本将被序列化,然后作为文本传递给Phantom,因此所有变量范围信息都将丢失。但是,调用方的变量可以按如下方式传递到脚本中: 碳纤维 因此,你可能应该按照他们的指示,做如下事情:
onLoadFinished: {
fn: function() {
document.getElementById("user_input").value=this.fLineSnapshot;
document.getElementById("second_user_input").value="AMAZON USERNAME";
document.getElementById("preview_btn").click();
},
context: {
fLineSnapshot: fLine
}
},
文档在nodejs应用程序中来自何处?webshot正在调用幻影js来打开一个url headless。我试图传递变量,以便它在调用它进行屏幕截图时可以填写表单。我将把它添加到问题中@ThomasAm不确定这里onLoadFinished方法的用途,如果你能详细说明,我建议一个更好的解决方案。是的,onLoadFinished在webshot使用的选项中。Webshot是一个节点模块,它使用phantom js拍摄网页的屏幕截图。所以webshot使用选项来获取phantom js将使用的任何细节。在示例中,document.getElementByID由值填充@Arulmozhi ManikandanI现在明白了,您可以尝试类似于inside takeWebshot将本地存储中的存储fLine设置为localStorage。setItem'fLine',fLine和inside onLoadFinished从本地存储localStorage设置元素值。GetItem'fLine'。我知道现在这就像一个补丁,这会起作用,但我明天或以后会用实际设置运行一些测试,并会找到一个正确而干净的解决方案。@FabricioG我在查看了webshotAh man的文档后更新了我的答案!真不敢相信我错过了!谢谢大家!@海关指挥官
onLoadFinished: {
fn: function() {
document.getElementById("user_input").value=this.fLineSnapshot;
document.getElementById("second_user_input").value="AMAZON USERNAME";
document.getElementById("preview_btn").click();
},
context: {
fLineSnapshot: fLine
}
},