小编lla*_*s48的帖子

Javascript只允许特定的HTML标记

我有一个很长的HTML字符串,我想解析它只允许某些html标签通过.

允许的标签是粗体,斜体,下划线,段落,有序列表和无序列表.

应返回这些标记及其相应的文本.应删除所有其他标记,并且只应留下innerHTML.

对于以下输入,输出应如下:

输入:<p>There is some <u>text</u> here</p> 输出:<p>There is some <u>text</u> here</p>

输入:<span style="color: rgb(34, 34, 34); font-family: arial; font-size: small;">text here</span> 输出:文字在这里

输入:<div>Combo of <b>allowed</b> tag and <i>disallowed</i> tag</div> 输出:Combo of <b>allowed</b> tag and <i>disallowed</i> tag

我看过这个类似的问题:正则表达式只允许一组HTML标签和属性.但是,我想知道你将如何在Javascript中做到这一点?我目前正在迭代html并搜索允许的标签,如下所示:

var htmlString = "<p>There is some <u>text</u> here</p>";
var allowedTags = ["<b>", "<i>", "<u>", "<p>", "<ol>", "<ul>"];
for (i = 0, len = allowedTags.length; i < len; i++) {
    var ind = htmlString.indexOf(allowedTags[i]); …
Run Code Online (Sandbox Code Playgroud)

html javascript strip-tags

5
推荐指数
1
解决办法
2038
查看次数

检测chrome扩展弹出窗口何时关闭并保存数据

当用户未按"保存"并且Chrome扩展程序弹出窗口关闭或导航到其他选项卡时,我正在尝试防止信息丢失.我从弹出窗口保存文本,并在弹出窗口再次打开后将其放回原处.

所以,我有这个代码来检测background.js中的关闭弹出窗口:

var backgroundPage = chrome.extension.getBackgroundPage();
window.addEventListener("unload", function() {
    if(saved === false) {
       var savedText = document.getElementById('textbox').value;
       localStorage.setItem('text', savedText);
       backgroundPage.console.log(localStorage.getItem('text'));
     }
}, true);
Run Code Online (Sandbox Code Playgroud)

在另一个函数中,一旦再次加载弹出窗口,我将数据设置为

if(localStorage.getItem('text') !== "") {
   document.getElementById('text').value = localStorage.getItem('title');
}
Run Code Online (Sandbox Code Playgroud)

但是,这有时只能起作用.我看过其他帖子,铬有一个bug:检测卸载事件.但是,我看到的问题很奇怪.当我没有我的后台页面检查视图打开时,导航离开并重新打开后,数据不会显示在弹出窗口的文本框中.但是,如果我的背景页面检查视图打开,数据显示在文本框中...我是Chrome扩展开发的新手,有人可以帮我解决这个问题吗?

我还尝试了为消息传递设置端口的其他建议,但不确定如何正确执行此操作.在background.js中:

 port.onDisconnect.addListener(function() {
    backgroundPage.console.log("Disconnected");
 })
Run Code Online (Sandbox Code Playgroud)

我需要什么吗?我在哪里设置端口和chrome.runtime.onConnect?这是什么代码?

javascript jquery popup google-chrome-extension window.onunload

5
推荐指数
0
解决办法
1467
查看次数

在开发过程中保持chrome扩展ID相同

我试图在不同的机器上测试我的chrome扩展,并且我看到扩展ID每次都会更改,因为我将它作为解压扩展加载.

但是,我真的需要保持相同的扩展ID.我的扩展程序通过OAuth 2.0与外部非Google提供商进行.当我向外部提供商注册我的扩展时,我提供了重定向URI, chrome-extension://<extension-id>/callback.html如果我再次加载解压缩的扩展名,则ID会更改,我的应用程序将不再适用,因为重定向URI会更改.不断更改重定向URI几乎是不可行的.我如何保持相同的ID?

google-chrome oauth google-chrome-extension

5
推荐指数
1
解决办法
3077
查看次数

正则表达式提取 img src javascript

我正在尝试从长 html 字符串中提取 img 和 src。

我知道有很多关于如何做到这一点的问题,但我已经尝试过并得到了错误的结果。我的问题只是关于矛盾的结果。

我在用:

var url = "<img height=\"100\" src=\"data:image/png;base64,testurlhere\" width=\"200\"></img>";
var regexp = /<img[^>]+src\s*=\s*['"]([^'"]+)['"][^>]*>/g;
var src = url.match(regexp);
Run Code Online (Sandbox Code Playgroud)

但这会导致 src 没有被正确提取。我不断得到 src =<img height="100" src="data:image/png;base64,testurlhere" width="200"></img>而不是data:image/png;base64,testurlhere

但是,当我在 regex101 的 regex 测试器上尝试此操作时,它会正确提取 src。我究竟做错了什么?是否使用match()了错误的函数>

javascript regex

4
推荐指数
2
解决办法
8369
查看次数

从javascript执行python脚本

我是python的新手.我正在开发一个Web应用程序并尝试从js脚本调用python脚本.我使用ajax调用.py脚本,如下所示,但我只是继续获取​​响应中返回的代码.为简单起见,我减少了python脚本中的计算 - 即使变量x也没有返回到js文件.

在js函数中

  return $.ajax({
    type: 'GET',
    url: 'test.py',

    success: function(response) {
      console.log(response);
    },
    error: function(response) {
      return console.error(response);
    }
  });
Run Code Online (Sandbox Code Playgroud)

test.py

#!/usr/bin/python

print("Hello World")

x = 2
return x
Run Code Online (Sandbox Code Playgroud)

请求成功,因为它在内部成功.响应是python代码而不是2.感谢您的帮助!

javascript python ajax

2
推荐指数
1
解决办法
1万
查看次数

登录后在 chrome 扩展中弹出窗口

我正在尝试创建一个具有以下规格的 Chrome 扩展:

  1. 安装扩展。--> 单击扩展图标。
  2. 每次单击该图标时,后台脚本都会检查访问令牌是否存在。
  3. 如果访问令牌不存在(这是第一次用户的情况),将显示一个单独的窗口(使用 window.open())提示用户登录。
  4. 如果存在访问令牌,则单击该图标后应该会显示一个 chrome 扩展弹出窗口。

在我当前的实现中,我没有在manifest.json 中设置默认弹出窗口。如果后台脚本发现存在访问令牌,它将使用 chrome.browserAction.setPopup 设置弹出窗口。但是,只有在我单击该图标两次后才会显示弹出窗口。我知道这是因为它在第一次单击时设置弹出窗口,然后在第二次单击时显示它。但是,有什么办法让它显示在第一个吗?

有没有更好的方法来实现这个逻辑,这样我就不必在每次检测到访问令牌时都设置弹出窗口并要求用户单击两次(在我看来,这对用户来说不是很友好)?

谢谢!

javascript popup google-chrome-extension

0
推荐指数
1
解决办法
3286
查看次数