小编Use*_*r59的帖子

在页面完全呈现之前“立即”将来自 chrome 扩展的 CSS 样式应用到页面

我是 chrome(甚至浏览器)扩展的新手,我正在尝试制作一个将一些自定义 CSS 规则应用于某些页面元素的扩展。它似乎按预期工作,但有一些轻微的烦恼。

也就是说,当我使用 JS 应用任何 CSS 样式规则时,页面在浏览器中完全呈现到应用我的扩展的 CSS 规则之间似乎存在延迟。

我发现解决这个问题的一种方法是将我想立即应用到清单文件的 CSS 文件添加到 . 下content_scripts,如下所示:

"content_scripts": [
    {
      "run_at": "document_start",
      "all_frames": true,
      "matches": ["<all_urls>"],
      "js": ["filter.js"],
      "css": ["filter.css"]
    }
   ],
Run Code Online (Sandbox Code Playgroud)

但现在的问题是,我想检查用户是否在应用此扩展程序的弹出窗口中按下了“启用”按钮。为此,在filter.js后台脚本中,我检查了 chrome 存储等,以查看用户是否将启用标志设置为 true。

然后我使用该chrome.tabs.insertCSS方法插入我的 CSS 文件。

在用户在扩展上按下禁用的情况下,浏览器仍会呈现具有 效果的页面,filter.css直到它运行 JS 以移除效果。到发生这种情况时,用户已经看到了filter.css我不想要的效果。

我想要的是浏览器在页面显示给用户之前立即应用或不应用我的样式(取决于用户是否已启用/禁用)。

到目前为止,注入 CSS 的方法都导致了延迟。必须可以毫不拖延地将其添加到或删除 CSS,因为我使用了诸如 Dark Reader 之类的扩展程序,这些扩展程序似乎能够立即应用其样式,而无需在没有 CSS 的情况下显示浏览器内容。

理想情况下,有一种方法可以在清单中进行条件检查,但我知道这是不可能的。我还可以做些什么?

任何帮助,将不胜感激!

谢谢阅读!

html javascript css browser google-chrome-extension

6
推荐指数
1
解决办法
179
查看次数

Java Try Catch块

我最初开始在大学编程并学习vb.net.现在我决定转向Java并进行一些查询.在vb中,try catch语句的布局如下

try
Catch ex as exception
finally
End catch
Run Code Online (Sandbox Code Playgroud)

但是从java网站(https://docs.oracle.com/javase/tutorial/essential/exceptions/putItTogether.html)我发现在java中你使用两个类似的捕获:

    try {

} catch (ExceptionType name) {

} catch (ExceptionType name) {

}
Run Code Online (Sandbox Code Playgroud)

我希望有人可以解释为什么你需要在Java中捕获两次,以及各自捕获的捕获量是多少.

谢谢.

java vb.net error-handling try-catch

3
推荐指数
1
解决办法
316
查看次数

通过datagridview搜索值

我试图通过在文本框中输入文本然后使用SQL查询数据库然后在datagridview中显示结果来搜索数据库中的特定值.

这是代码:

  Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSearch.TextChanged
    Connection.Open()
    Dim dataTable As New DataTable
    Dim dataSet As New DataSet
    dataSet.Tables.Add(dataTable)
    Dim dataAdapter As New OleDbDataAdapter
    Dim SQLQuery As String
    SQLQuery = <sql> 
            SELECT * 
                 FROM Students
                 WHERE StudentFirstName = @StudentFirstName
                </sql> .Value

    dataAdapter = New OleDbDataAdapter(SQLQuery, Connection)
    dataAdapter.SelectCommand.Parameters.Add("@StudentFirstName", SqlDbType.Text).Value = txtStudentFirstname.Text
    dataAdapter.Fill(dataTable)
    dgrStudentDatabaseViewer.DataSource = dataTable.DefaultView
    ShowItems()
    Connection.Close()
End Sub
Run Code Online (Sandbox Code Playgroud)

对ShowItems()的调用刷新datagridview这里是它的代码

 Private Sub ShowItems() ' the following delcleration are used for displaying the contents of …
Run Code Online (Sandbox Code Playgroud)

.net vb.net oledb datagridview

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