Chrome 扩展:在网页中的任何其他 JS 之前运行可访问窗口的自定义 JS
我正在编写Chrome扩展(manifest v3),主要目的是覆盖一些Window本机函数并在任何其他网页脚本可以访问它们之前替换它们。 我有 contentscript.js
QWebEngineView:html 文件中的 href 不起作用
我有一个 test.html 文件,例如: 我有一个 test.html 文件,例如: <!DOCTYPE html> <html> <head> </head> <body> <a style="padding-right:5px" target="_blank" href="data/">Datadir</a> </body> </html> 包含 test.html 的目录如下: test.html data\ a.txt b.txt 我使用“file:///remote/us01home19/ktc/public_html/testLocalHref/test.html”并在firefox和chrome中单击Datadir,结果如下: 和: 我写了一个pyside2代码来做同样的事情,代码如下: from PySide2 import QtCore, QtWidgets, QtWebEngineWidgets import os import sys class CustomWebEnginePage(QtWebEngineWidgets.QWebEnginePage): # Store second window. external_window = None def acceptNavigationRequest(self, url, _type, isMainFrame): print(url, _type, isMainFrame) if _type == QtWebEngineWidgets.QWebEnginePage.NavigationTypeLinkClicked: if not self.external_window: self.external_window = QtWebEngineWidgets.QWebEngineView() self.external_window.setUrl(url) self.external_window.show() return False return super().acceptNavigationRequest(url, _type, isMainFrame) class MainWindow(QtWidgets.QMainWindow): def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) self.browser = QtWebEngineWidgets.QWebEngineView() self.browser.setPage(CustomWebEnginePage(self)) # self.browser.setUrl(QtCore.QUrl("https://code.visualstudio.com")) self.browser.setUrl(QtCore.QUrl("file:///remote/us01home19/ktc/public_html/testLocalHref/test.html")) # self.browser.setUrl(QtCore.QUrl("file:///remote/tw_rnd1/ktc/prog/python/pyside2/WebEngine/data/aaa.ava.summary.html")) #self.browser.setUrl(QtCore.QUrl("file:///remote/tw_rnd1/ktc/prog/python/pyside2/WebEngine/data/aaa_ava_corners/C_1")) self.setCentralWidget(self.browser) if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) 但是执行代码,我得到的结果如下: 但是点击Datadir,没有任何反应,甚至QWebEnginePage.acceptNavigationRequest也没有触发。有没有办法让 QWebEngine 的行为像 Firefox 和 Chrome 一样? 我尝试在 QWebEnginePage.acceptNavigationRequest 函数中添加打印消息来捕获点击 dataDir 信息,但似乎没有任何响应。 python版本:python-3.9.0, 操作系统版本:“CentOS Linux 7”, Qt 版本:“Qt_5.15” python 和 Qt 是自定义构建 我发现问题来自htmltarget =“_blank”在QWebEnginePage中不起作用,它可以通过在QtWebEngineWidgets中实现类函数createWindow来避免,例如: class CustomWebEnginePage(QtWebEngineWidgets.QWebEnginePage): # Store second window. external_window = None def acceptNavigationRequest(self, url, _type, isMainFrame): print(url, _type, isMainFrame) if _type == QtWebEngineWidgets.QWebEnginePage.NavigationTypeLinkClicked: if not self.external_window: self.external_window = QtWebEngineWidgets.QWebEngineView() self.external_window.setUrl(url) self.external_window.show() return False return super().acceptNavigationRequest(url, _type, isMainFrame) def createWindow(self, t): return self;enter code here
我想在div滚动到视口时启动一个函数。我的问题是,每次我继续滚动时,该功能都会再次触发/启动。 HTML: <... 我想在 div 滚动到视口中时启动一个函数。我的问题是,每次我继续滚动时,该功能都会再次触发/启动。 HTML: <div class="box"></div> JS: $(document).ready(function() { function start() { alert("hello"); } $(window).scroll(function() { if ( $(window).scrollTop() >= $('.box').offset().top - ($(window).height() / 2)) { $(".box").addClass("green"); start(); } else { $(".box").removeClass("green"); } }); }); 总结一下:当div滚动到视口中时,应该启动“start”函数。但触发一次后就不能再触发了。 小提琴 您可以设置一个标志,例如: var started = false; function start() { if(!started) { alert("hello"); } started = true; } 演示 $(document).ready(function() { var started = 0; function start() { if(started==0) { alert("Alert only once"); } started = 1; } $(window).scroll(function() { if ( $(window).scrollTop() >= $('.box').offset().top - ($(window).height() / 2)) { $(".box").addClass("green"); start(); } else { $(".box").removeClass("green"); } }); }); *{margin:0;} .box { background: red; height: 200px; width: 100%; margin: 800px 0 800px 0; } .green { background: green; } <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <br /> <center> <br /> <h1>scroll down</h1> </center> <div class="box"></div> 有很多方法可以解决这个问题。您可以删除事件侦听器(因为您使用的是 jQuery,所以我将使用 on 和 off 方法): $(window).on('scroll', function() { if ( $(window).scrollTop() >= $('.box').offset().top - ($(window).height() / 2)) { $(".box").addClass("green"); start(); } else { $(".box").removeClass("green"); } $(window).off('scroll'); }); 如果你希望窗口滚动方法在启动方法满足要求后停止..你可以这样做 $(document).ready(function() { var toggleScroll = false; function start() { alert("hello"); } $(window).one("scroll", checkToggleScroll); function checkToggleScroll(){ if ( $(window).scrollTop() >= $('.box').offset().top - ($(window).height() / 2)) { $(".box").addClass("green"); toggleScroll = true; start(); } else { $(".box").removeClass("green"); } if(!toggleScroll){ $(window).one("scroll", checkToggleScroll); } } }); 当start()没有类$(".box)(在一定量的滚动后添加)时,只需运行"green"函数。 $(document).ready(function() { function start() { alert("hello"); } $(window).scroll(function() { if ($(window).scrollTop() >= $('.box').offset().top - ($(window).height() / 2)) { if (!$(".box").hasClass("green")) { $(".box").addClass("green"); start(); } } else { $(".box").removeClass("green"); } }); }); .box { background: red; height: 200px; width: 100%; margin: 800px 0 800px 0; } .green { background: green; } <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="box"></div>
如何在 WindowStyle=None 的情况下删除 WPF 窗口顶部的白色条带?
是否可以在 Window Style=None 的情况下删除 WPF 窗口顶部的白色条带。 XAML 和 Window 如屏幕截图所示:
最近升级到 Chrome 58 引起了问题。当 Selenium 启动 Chrome 实例时,它不会像 Chrome 57 那样导航到初始 URL。现在,当通过
是否可以在 PySimpleGUI 窗口启动时选择非第一个选项卡?
window = sg.Window("foobar", 布局, 边距=(2, 2), Finalize=True) window.Element('-ENCR_TAB-').Select() 我看到的是第一个选项卡被选中,过了一会儿“-
我无法在 Puppeteer 中使用特定配置文件。它始终以新用户身份打开 chrome。 例如:我的 chrome 有 3 个配置文件。以下是我用来打开 chrome 的代码
我有一个 UserControl,用作窗口对话框的“模板”。 它包含一个关闭按钮和一个取消按钮。 我有一个 UserControl,用作窗口对话框的“模板”。 它包含一个关闭按钮和一个取消按钮。 <UserControl x:Class="TombLib.WPF.Controls.WindowControlButtons" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:TombLib.WPF.Controls" mc:Ignorable="d" xmlns:darkUI="clr-namespace:DarkUI.WPF;assembly=DarkUI.WPF" xmlns:vm="clr-namespace:TombLib.WPF.ViewModels" xmlns:sg="clr-namespace:SpacedGridControl;assembly=SpacedGridControl" d:DesignHeight="100" d:DesignWidth="300" x:Name="root"> <StackPanel VerticalAlignment="Center" HorizontalAlignment="Right" Height="Auto" Orientation="Horizontal"> <Button Name="oKButton" Margin="{x:Static darkUI:Defaults.MediumThickness}" Width="100" Height="Auto" Command="{Binding Close}" CommandParameter="{Binding Window}" Content="OK"></Button> <Button Name="cancelButton" Margin="{x:Static darkUI:Defaults.MediumThickness}" Width="100" Height="Auto" Command="{Binding Path=Cancel}" CommandParameter="{Binding Window}" Content="Cancel"></Button> </StackPanel> </UserControl> public partial class WindowControlButtons : UserControl { public static readonly DependencyProperty CancelProperty = DependencyProperty.Register( nameof(Cancel), typeof(ICommand), typeof(WindowControlButtons), new PropertyMetadata(null)); public ICommand Cancel { get { return (ICommand)GetValue(CancelProperty); } set { SetValue(CancelProperty, value); } } public static readonly DependencyProperty CloseProperty = DependencyProperty.Register( nameof(Close), typeof(ICommand), typeof(WindowControlButtons), new PropertyMetadata(null)); public ICommand Close { get { return (ICommand)GetValue(CloseProperty); } set { SetValue(CloseProperty, value); } } public static readonly DependencyProperty WindowParameter = DependencyProperty.Register( nameof(Window), typeof(object), typeof(WindowControlButtons), new PropertyMetadata(null)); public object? Window { get { return GetValue(WindowParameter); } set { SetValue(WindowParameter, value); } } public WindowControlButtons() { InitializeComponent(); } } 我想在以下窗口中使用它: <Window x:Class="TombLib.WPF.Windows.SelectIdWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:TombLib.WPF.Windows" mc:Ignorable="d" xmlns:ctrl="clr-namespace:TombLib.WPF.Controls" xmlns:vm="clr-namespace:TombLib.WPF.ViewModels" xmlns:sg="clr-namespace:SpacedGridControl;assembly=SpacedGridControl" xmlns:darkUI="clr-namespace:DarkUI.WPF;assembly=DarkUI.WPF" Title="SelectIdWindow" Height="100" Width="300" d:DataContext="{d:DesignInstance Type=vm:SelectIdViewModel }" x:Name="Self"> <sg:SpacedGrid Margin="{x:Static darkUI:Defaults.MediumThickness}"> <!-- REDACTED --> <ctrl:WindowControlButtons DataContext="{Binding ElementName=Self}" Window="{Binding ElementName=Self, Mode=OneWay}" Close="{Binding CloseCommand,Mode=OneWay}" Cancel="{Binding CancelCommand,Mode=OneWay}" Height="Auto" Width="Auto" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Right"/> </sg:SpacedGrid> </Window> public partial class SelectIdWindow : Window { public ICommand? CloseCommand { get; set; } public ICommand? CancelCommand { get; set; } public SelectIdWindow() { CloseCommand = new WindowCloseCommand(); InitializeComponent(); } } public class SelectIdViewModel { public string RequestedId { get; set; } = string.Empty; public IEnumerable<string> TakenIds { get; set;} public SelectIdViewModel(IEnumerable<string> takenIDs) { TakenIds = takenIDs; } } 但是,当我打开窗口时如下: SelectIdWindow w = new SelectIdWindow(); var takenIDs = Entities.Select(kv => kv.Key.Name); w.DataContext = new SelectIdViewModel(takenIDs); w.ShowDialog(); 我在绑定 WindowControlButtons 时收到以下错误: DataContext 显式设置为 Self,它应该代表 Window,而不是 ViewModel。我在这里做错了什么? 绑定错误表明问题出在 Button.ICommand 属性上: 要修复此问题,请在 WindowControlButtons 绑定中添加 ElementName=root,以便绑定到声明的依赖项属性而不是 DataContext: <UserControl x:Class="TombLib.WPF.Controls.WindowControlButtons" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:TombLib.WPF.Controls" mc:Ignorable="d" xmlns:darkUI="clr-namespace:DarkUI.WPF;assembly=DarkUI.WPF" xmlns:vm="clr-namespace:TombLib.WPF.ViewModels" xmlns:sg="clr-namespace:SpacedGridControl;assembly=SpacedGridControl" d:DesignHeight="100" d:DesignWidth="300" x:Name="root"> <StackPanel VerticalAlignment="Center" HorizontalAlignment="Right" Height="Auto" Orientation="Horizontal"> <Button Name="oKButton" ... Command="{Binding Close, ElementName=root}" CommandParameter="{Binding Window, ElementName=root}" Content="OK"/> <Button Name="cancelButton" ... Command="{Binding Path=Cancel, ElementName=root}" CommandParameter="{Binding Window, ElementName=root}" Content="Cancel"/> </StackPanel> </UserControl>
我正在尝试在清单版本 3 中创建 Chrome 扩展, 我想从 Chrome 扩展中的 Dom 中抓取数据。当我加载 chrome 扩展 Dom 时未加载,因此无法爬行,af...
如何在Ractive.js中绑定变量window['array[element]']?
需要对具有“array[element]”这样非典型名称的变量进行双向绑定。 下面的语法有效,但是当我将 0 更改为 @index 时,它就会被破坏。添加反斜杠是...
Chrome 浏览器在运行 selenium chrome webdriver 后关闭
我目前正在学习 Selenium 4.0,并设置了一个基本脚本,可以单击 Python 网站上的按钮。我正在使用 Chrome 网络驱动程序。但每当我运行代码时,都会打开一个 chrome 窗口,显示
我在 angular.json 和 tsconfig.json 中给出了 sourceMap= true 。我在 chrome 工具中仍然看不到源图
//评论 //Ctrl+K,Ctrl+C(在 Visual Studio 中注释代码) //Ctrl+K,Ctrl+U(在 Visual Studio 中取消注释代码) //Ctrl+? (在Chrome开发者工具中评论) //Ctrl+? (在 Chrome 中取消注释
有什么方法可以让我们以编程方式识别最新版本的chrome并进行相应升级。 我想找到最新版本的chrome并进行相应升级
我在使用 Google Chrome 时遇到了非常奇怪的行为。 在 Google Chrome 地址栏中(您可以在其中输入搜索词或 URL),它会记住搜索和页面的历史记录。嗬...
单击重新加载(在 chrome://extensions 中)与 chrome 扩展自动更新时相同吗? 我想避免 chrome 网上应用店更新过程等待 60 分钟。
我在自己的桌面上使用 XAMPP 包,操作系统为 Window 7。 这意味着我正在使用 MySQL DB 和 Apache 服务器。 现在我想将我的整个 MySQL 数据库复制/迁移到我朋友的桌面,这是......
Chrome 调试器 - 如何关闭 console.log 消息分组?
比如说,在我的 Google Chrome 扩展中我这样做: 控制台.log(消息); Chrome 调试器将类似的消息分组如下: 有没有什么可以关闭它并让消息按原样发布?
Android - Chrome“添加到主屏幕”不在全屏模式下
只有我一个人,还是Chrome总是在新选项卡中打开我添加到主屏幕的链接(右上角的3点菜单 - >添加到主屏幕)? 该问题仅出现在最新的 Chrome 中,并且...
通过 javascript 打开我的扩展 html 文件时,Chrome 会阻止它[已修复,我只是愚蠢]
我目前正在编写一个 chrome 扩展。我有一个按钮应该打开我的扩展根目录中的settings.html 文件。但它被 chrome 阻止,说“向服务器发出请求......
我在selenium 4.16.0,chrome-120.0.6099.217中使用了上面的代码 从 selenium.webdriver.edge.service 导入服务 service_obj = 服务() 驱动程序 = webdriver.Chrome(service=service_obj) 司机....
最近,我需要解析 Chrome Web 浏览器在开发工具中记录事件时生成的 JSON,并从中获取一些计时数据。 Chrome 可以产生相当大量的数据...
今天我注意到在 Chrome gtag/js?id=... 中开始出现错误: 未捕获(承诺中)类型错误:无法在“CookieDeprecationLabel”上执行“getValue”: 在gtag.js中,错误发生在这里...
如何将chrome配置文件传递到jmeter中的jpgc@ Chrome驱动程序配置
我正在尝试使用 Fireshot API 获取整页屏幕截图。以下是@Jpgc Webdriver Sampler中的示例代码: 导入 org.openqa.selenium.WebDriver 导入 org.openqa.selenium.chrome.ChromeDri...
Chrome 驱动程序 113 不支持现有 Chrome 浏览器版本 120.0.6099.130
当我在启动浏览器时运行 jmeter - selenium Web 驱动程序脚本时出现以下错误 Org.openqa.selenium.SessionNotCreatedException:无法启动新会话。响应代码 500。混乱...
我无法使用 Chrome 扩展程序中的 chrome.downloads API 停止小文件下载
我试图在 Chrome 扩展清单版本 3 中结束(并在分析后重新启动)文件下载之前停止。我正在使用 chrome.downloads.OnDeterminingFileName 和 chrome.downlo...
我正在运行最新版本的Chrome:版本120.0.6099.217(官方版本)(64位) 如何摆脱这个烦人的恢复页面弹出窗口?我找到了大量的解决方案,但没有一个有效......
在 Google Chrome 中清除单个网站的网站数据,现在可以重定向
因此,我们将网站从 example.com 切换到 www.example.com (并实现了到 www.example.com 的转发)。我相信我仍然有 Google Chrome 站点数据,这会导致问题(Shopware 6 试图
JavaScript StructuredClone 在 Chrome/Edge 中遇到“非法调用”,但在 NodeJS 中没有遇到问题
在浏览器中运行以下代码: ({ 克隆: StructuredClone }).clone(1); 会得到 Uncaught TypeError: Illegal incalling,在 Chrome/Edge 中测试。 不过在 NodeJS 中运行代码没问题,测试一下...
对于我的 Chrome 扩展程序,我想为用户提供下载 PDF 的选项,以显示并格式化他们的数据。这个想法是用户按下扩展弹出窗口上的按钮,扩展
Android 14 照片选择器相机磁贴已从 Google Chrome 中删除
尝试在Android 14上使用chrome在网站上上传照片。不再有使用相机拍照和上传的选项。唯一的选择是从相册中选择照片。仅此问题...
我们刚刚购买了 Primeface 主题和布局哨兵。然而我注意到 Chrome 中的表格有一个奇怪的样式。表页眉和页脚有橙色边框。我的同事看不到这个...
如何在不使用 iframe 的情况下使用 Angular 为 chromeextension 创建侧边栏
我正在使用 Angular 开发 chrome 扩展,我的扩展与 MaxAI chrome 扩展类似,当用户单击小部件时,它会打开侧边栏。 我尝试了一些教程来创建...
我使用 Chrome 通过点击浏览器中的链接来触发意图: 塔...
错误:找不到 Chrome(版本 119.0.6045.105)。如果出现以下任一情况,就会发生这种情况
我正在使用这个 Laravel 包:https://github.com/spatie/browsershot 来截屏。它基于 Puppeteer 但是当我运行时它返回这个错误 错误输出: 错误:找不到 Chrome (...
我想使用 Excel VBA 通过 Chrome 打开一个 URL 来填写数据并点击提交按钮。 我编写了打开 URL 的命令。 如何输入数据并提交表格? 我的代码: 子
在不打开扩展弹出窗口的情况下显示来自 Socket.io 服务器的 Chrome 扩展通知
我有一个使用 React.js 构建的 Chrome 扩展,它与 Socket.io 服务器通信以接收通知。我想向用户显示这些通知,即使扩展程序弹出...
TypeError:WebDriver.__init__() 获得意外的关键字参数“chrome_options”
从 selenium 导入 webdriver 从 selenium.webdriver.chrome.options 导入选项 选项 = 选项() options.binary_location = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe&...
为什么这不起作用? chrome 给我一个错误, 未捕获的语法错误:意外的 tok...
在 Chrome 中为位于 %UserProfile%\Desktop\ 的本地 HTML 文件添加书签
我有一个很小的 HTML 文件,其中包含一个图标和一个重定向,以区分不同计算机上没有自定义图标的多个 URL,我想在 Chrome 上将其添加为书签。罪恶...
是否可以在不安装Chrome应用程序的情况下使用Selenium?
如标题所示,是否可以在不下载整个 Google Chrome 应用程序的情况下使用 Selenium?我想知道这一点,因为你可以在 replit 上运行 Selenium 而不会出现任何问题,但是......
自flutter 1.9:如何在浏览器中运行flutter应用程序? Flutter run -d chrome 不起作用
从 flutter 1.9 开始,flutter_web 被合并到 flutter 中。我尝试在 Chrome 浏览器中运行初始 flutter 应用程序,但失败了。操作系统是ubuntu 19.04 我成功使用的命令: 颤振升级...
如何在 Chrome 的文本区域编辑器中使用 Tab 来识别多行?
我正在寻找一种解决方案,使我能够使用 tab/shift-tab 来更改文本区域中选定多行的缩进,就像这里的 markdown 编辑器一样。 到目前为止我正在寻找 Chrome
网站在 mozilla 中可以正常打开,但在 chrome 中则不行
所以我面临的问题是该网站在 firefox 中工作正常,甚至在 Chrome 中加载 http 时也工作正常,但是当您切换到 https 时,它会停止工作,并且在网络选项卡中仅返回...
为什么 Google Chrome 窗口在 VS Code 中打开?
每当我尝试打开新的 google chrome 窗口时,它都会在 ubuntu 上的 Visual Studio Code 中打开。我该如何解决这个问题?我没有使用任何插件。有时,如果我重新启动,它就可以正常工作。但有时...
chrome 开发工具 我无法获取 xmp 标签或类“note”出现错误 我尝试过这些 # status = driver.find_element(By.CSS_SELECTOR, value=".msgdiv") 状态=司机。
为什么 Chrome 开发工具(网络选项卡)不显示请求的响应? (无法加载响应数据:未找到具有给定标识符的资源))
我无法推断为什么 Chrome(97.x.x.x) 无法加载成功 POST XHR 的响应。它在响应部分显示以下消息: 无法加载响应数据:否
使用 chrome 版本 120 获取 org.openqa.selenium.SessionNotCreatedException
我收到以下异常: org.openqa.selenium.SessionNotCreatedException:无法启动新会话。响应代码 500。消息:会话未创建:此版本的 ChromeDriver 仅适用...
如何在 Firefox 上允许 CORS? 我在 Chrome 和 Internet Explorer 上轻松管理了它,但在 Firefox 上却完全失败了。我编辑了以下 about:config 条目 安全.fileuri.