2

我们的一位客户有一项新要求,即动态捕获用户与之交互的页面上所有控件(文本框、复选框、单选按钮、普通按钮、链接、图像、菜单/菜单项)的页面/屏幕标题和标签然后将它们推送到excel文件。

如果客户导航/打开页面 A 并在文本框 Name = John 中设置值,启用 checkboxChBox/radio 按钮 Rbutton 然后最后单击保存/提交按钮,则预期会出现以下输出。用户操作和结果是 Excel 文件的前 2 列。

     **User Action**                               **Result**

      Open Page/Screen A                            Page/Screen A is displayed
      Set textbox Name = John                       Field Name is set successfully
      Set  ChBox = true                             ChBox is enabled successfully
      Set Rbutton = true                            Rbutton is enabled successfully
      Click Submit button                           Page B is displayed

只是想知道是否有可能完成这种捕获任何页面的用户交互的通用方法。

4

2 回答 2

0

Javascript 无权在硬盘驱动器中写入文件。但是,您可以捕获数据、制作模型,然后使用 ajax 调用将其存储在服务器中。

一些想法:

  1. 使用在整个应用程序视图中呈现的布局或母版页。
  2. 为所有页面标签、按钮、复选框和您需要存储信息的任何内容提供相同的类名。
  3. 在主/布局页面中使用一些 jquery 魔法来获取这些元素的值并创建一个数组。
  4. 通过 ajax 调用将该数组发送到服务器。

现在您可以获得大量关于如何使用 jquery 获取元素值的示例。我要让你免于付出这一切。希望对您有所帮助... :D

//编辑:我正在尝试按照史蒂夫的要求扩展我的答案。

<form action="someAction" id="myForm">
Name: <input type="text" class="Name">
Checkbox: <input type="checkbox" class="ChBox"/>Click this box
RButton: <input class="Rbutton" type="radio" />
Submit: <input type="submit" class="submit"/>
</form>

现在一些jQuery:

$(function() {
     $(".submit").click(function(){
var dataToSend = new Object();
dataToSend.pageUrl = window.location.pathname + " is displayed";
if ($(".Name").val().length > 0) {
dataToSend.Name = "Field Name is set successfully";
}
else {
dataToSend.Name = "Field Name is empty";
}
if($(".ChBox").is(':checked')){dataToSend.ChBox = "ChBox is enabled successfully";}
else{dataToSend.ChBox = "ChBox is not enabled";}
if($(".Rbutton").is(':checked')){dataToSend.Rbutton = "Rbutton is enabled successfully";}
else{dataToSend.Rbutton = "Rbutton is not checked";}
dataToSend.Submit = $("#myForm").attr['action'] + " is displayed";
});


//now send it to the server via ajax

$.ajax({
 type: "POST",
 url: "your server action url that would make excel file with these data",
 data: dataToSend,
 contentType: "application/json; charset=utf-8",
 dataType: "json",
 success: function(msg) {
//do as you wish
 }
});

    });
于 2013-06-08T16:56:31.043 回答
0

只是一个想法:您可以监听所有事件(例如使用 jquery),然后为每个“有趣”事件发布一个 ajax 请求(您必须过滤......),将其存储在数据库中,然后添加一个 '以 csv 或 excel 格式导出'函数。

也许是一些性能问题,这取决于页面、事件和用户的数量......

感谢 Hasan Iqbal Anik,使用类名进行过滤的想法很好。

于 2013-06-08T16:55:43.363 回答