Javascript在单元格点击时修改网页内容

Posted

技术标签:

【中文标题】Javascript在单元格点击时修改网页内容【英文标题】:Javascript to modify web content on cell click 【发布时间】:2018-12-04 15:49:11 【问题描述】:

我正在使用 WhatsApp Web 开发适用于 ios 的应用程序,我正在应用程序内对其进行全新外观。

我正在为 WkWebView 实现一些 JS 函数,例如更改宽度值、背景颜色和其他内容,但我陷入了困境。

您可能知道也可能不知道,WhatsApp 网络应用程序有两个主要列,其中一个显示聊天,另一个显示选定的聊天。像这样:

此时,我已设法在 wkWebView 上加载 Web 应用程序,并为聊天列提供 100% 的设备宽度。但现在我需要点击此列中的“单元格”,以便将宽度值更改为 Web 应用程序的另一侧。

其他问题似乎是在 iPhone 上,我需要在“单元格”中点按两次才能将聊天数据加载到右栏中。所以问题是,谁能帮我解决我的疑惑或给我一点提示?

非常感谢! 分子量

【问题讨论】:

我们能看到你现在的代码吗? 请注意:cultofmac.com/314343/… 该代码可以在javascript控制台中执行,在应用程序中只有一个JS Caller,当web视图被加载时,没有什么有趣的展示。 该应用不是whatsapp+这样的第三方api,该应用只是在移动应用中使用web.whatsapp.com接口。没有什么不合法的。仅显示带有 WhatsApp 网页内容的自定义网页视图。 有什么解决办法吗? @wazowski 【参考方案1】:

好吧,经过几天对 JS 函数的研究,我设法检测到 Web 视图中的触摸事件。可以在web.whatsapp.com java控制台中测试的语句是这样的:

function handleStart(evt) 
   evt.preventDefault();
   console.log('touchstart');

elements=document.getElementsByClassName('NAME');
for (var i = 0; i < elements.length; i++) 
   elements[i].addEventListener("touchstart", handleStart, false);

evt.preventDefault(); 阻止了触摸流程的执行,所以如果你想让它工作,只需评论这一行。

使用此功能,您可以处理触摸开始、触摸结束、触摸移动等...

另外,如果你想在iOS的WkWbView中执行这句话,你只需要像这样调用一个JS函数:

jsString = @"function handleStart(evt) evt.preventDefault();console.log('touchstart.'); \
                    elements=document.getElementsByClassName('NAME'); \
                    for (var i = 0; i < elements.length; i++)  \
                        elements[i].addEventListener('touchstart', handleStart, false); \
                    ";
[self callJS:jsString];

callJS 函数需要调用这个:

[_wkWebView evaluateJavaScript:jsString completionHandler:^(id response, NSError *error) 
    if (error)
        NSLog(@"%@", error.description);
];

为了“读取”左列单元格上的点击而不与其他事件混淆,您可以像这样处理带有点击事件的点击:

elements=document.getElementsByClassName('NAME');
for (var i = 0; i < elements.length; i++) 
   elements[i].addEventListener('click', 'console.log('click')', false);

希望对你有帮助!

【讨论】:

whatsapp @wazowski 的“名称”是什么? NAME 是您要使用的类的名称。来自网站的 div 上的类似内容:&lt;div class="_1jjYO"&gt;This is a div in a web&lt;/div&gt; 在这种情况下,'NAME' 是 '_1jiYO'。

以上是关于Javascript在单元格点击时修改网页内容的主要内容,如果未能解决你的问题,请参考以下文章

帆软怎么实现点击单元格中的数据弹出一个网页框

我的excel2016打开以后是空白页,要点击编辑栏之后才能显示内容,怎么修复?

怎么用按键精灵将EXCEL表格数据批量录入到网站?

网页设计,Access入门 2010,数学

如何将整个表格单元格变成 HTML/CSS 中的链接?

能设计一个软件,将需要填写的EXCEL表格生成为网页,在浏览器中填表吗?