我的/ js文件夹中有一个文件dmreboot_service.js。当我使用节点/js/dmreboot_service.js运行此文件时,它会成功调用Azure中的直接方法。
我需要能够通过单击Web应用程序来执行此功能或文件。
我尝试使用以下命令将脚本加载到html的开头:
<script src="js/dmreboot_service.js"></script>
我在外部文件中添加了警报。 如果我将此警报放在文件的顶部,它将起作用,但是位于 底部失败,因此该文件的内容未加载。
dmreboot_service.js的内容是:
'use strict';
var Registry = require('azure-iothub').Registry;
var Client = require('azure-iothub').Client;
var connectionString ="HostName=XxxxxxxX.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey=XxxxxxxxxxxxxxxxxxxxxxxxxxxxxxX=";
var registry = Registry.fromConnectionString(connectionString);
var client = Client.fromConnectionString(connectionString);
var deviceToReboot = 'Runner';
var startRebootDevice = function (twin) {
var methodName = "reboot";
var methodParams = {
methodName: methodName,
payload: null,
timeoutInSeconds: 30
};
client.invokeDeviceMethod(deviceToReboot, methodParams, function(err, result) {
if (err) {
console.error("Direct method error: "+err.message);
} else {
console.log("Successfully invoked the device to reboot.");
}
});
};
var queryTwinLastReboot = function() {
registry.getTwin(deviceToReboot, function(err, twin){
if (twin.properties.reported.iothubDM != null)
{
if (err) {
console.error('Could not query twins: ' + err.varructor.name + ': ' + err.message);
} else {
var lastRebootTime = twin.properties.reported.iothubDM.reboot.lastReboot;
console.log('Last reboot time: ' + JSON.stringify(lastRebootTime, null, 2));
}
} else
console.log('Waiting for device to report last reboot time.');
});
};
startRebootDevice();
setInterval(queryTwinLastReboot, 2000);
alert('dmreboot included!');
我还尝试在html的开头创建一个函数,该函数包含dmreboot_service.js的全部内容,但是尽管该函数被成功调用,但代码无法执行。
这是我需要开始工作的项目的最后一部分。我对此很陌生,这让我发疯了!!任何建议,不胜感激。
答案 0 :(得分:0)
我通常使用javascript处理HTML中的点击;
const doSomething = document.querySelector('.whateverclassnameyouchoose').addEventListener('click',onClick);
function onClick(e){
what ever you want the function to do
}
希望它会有所帮助:)