Bootstrap的dropdown-menu组件提供了下拉菜单的全部功能。
但需要注意的是,使用它需要在bootstrap.js之前引入popper.js,否则点击按钮时会出现js找不到某个函数的错误。
12document.write("<script src=" + parent.__dirname + "/libs/popper-2.11.2.min.js" + "></script>");
附:官网中对这一内容的叙述(纯英文)
Dropdowns are built on a third party library,Popper, which provides dynamic positioning and viewport detection. Be sure to includepopper.min.jsbefore Bootstrap’s JavaScript or usebootstrap.bundle.min.js/bootstrap.bundle.jswhich co ...
我使用Math.random() * 1e9作为某类元素的唯一id,所以这些元素的id一般长这样:
12id="toast196052045.92534143"
jquery选择器将无法正确识别这样的id,我猜测可能因为中间的小数点会被误认为类的标识。
而且更致命的是,控制台不会报错!
12var id = Math.floor(Math.random() * 1e9);
Math.floor()可以很好解决这一问题。另外,parseInt()函数虽然同样可以解决问题,但是它是为了转换string来设计的,为了代码的规范性还是少用来操作纯数字。毕竟谁都不想让自己的程序变成下面这样子:
春节将近,为了完成我给小木盒定下的开发目标,我准备采用bootstrap的toast组件来完成pop通知
我使用js操作HTML,给通知的关闭按钮动态注入js代码,遇到了奇怪的一幕
经过漫长的探索,解决办法如下
12var onclick = "onclick='$('#toast').remove()'";
由于html中,双引号的优先级大于单引号的优先级,我们可以借助js中的斜杠转义来在字符串中实现双引号。
把上面的代码替换成:
12var onclick = "onclick=\"$('#toast').remove()\"";
HTML识别问题完美解决。
开启我的electronAPP时,devtool出现“$ is not a function”报错。
解决方案:
在jquery引用后插入如下代码段
123<script type="text/javascript" src="./libs/jquery-3.6.0.min.js"></script><script>if (typeof module === 'object') { window.jQuery = window.$ = module.exports; };</script>
问题解决。
某天,我在npm上安装了asar模块。
今天下午竞赛课摸鱼,无聊拿它来对一个使用electron开发的教学软件(就是那个洋葱数学)进行asar解包操作。
控制台输入如下:
12$ asar extract [src] [dst]
其中,dst我定义为“F:\Program Files (x86)\洋葱学院\resources”
但当extract操作完毕,我却没有找到提取后的文件夹。
我只能一通乱翻。
本该出现在Program Files (x86)里的文件,出现了一个叫Program的文件夹里。
大胆猜测一下,asar或者nodejs可能无法正确识别含有某些特殊字符的目录地址(Program Files中间的空格!);或者windows的命令提示符会把空格认为是参数的分隔符。
看来这个Windows的设计缺陷确实容易坑不少人。。。
参见pansz大神的回答:
为什么 Windows 系统 Program Files 这个经常用来装软件的目录,名称中有个空格?
考虑到某些模块的正常运行离不开伪造http请求标头来欺骗服务器,以获取上面的某些敏感数据。
准备做一个应用内的定制版下载管理器,来承接各个模块可能需要触发的下载任务。
整个分支工程的框架大体如下:
一、外置下载引擎的可行性论证与选择优秀的下载器motrix使用aria2作为其内核,支持断点续传和多进程下载。但因其技术文档难以寻找,我打算使用常见的request模块来下载文件。以后若有时间,我会把aria2也集成进去。
二、下载逻辑以及代码编写1.作为一个独立对象储存在./insert/buildInDownloader
2.文件树目录结构:
3.下载原理:
创建写入流 fs.createWriteStream
get方法请求文件 request.get(options)
在request请求的回调函数中获取文件大小并设置length参数 length: response.headers[‘content-length’]
设置好length参数之后再重新request请求文件(否则无法获取length参数,进度信息会有误)
将request请求到的文件流pip ...
如果服务端不允许页面iframe嵌套,本地chromium会拦截iframe的load请求来阻止访问。
结合经验,我想到了如下解决方法来强行绕过这个检测:
我在初次研究ajax的时候发现了如果把xmlhttp指向任意一个非下载资源页面时,请求到的响应数据将是该页面的源代码。
我们可以把获得的网页源码直接通过document.write写到页面里。
利用这个feature,代码如下
12345678var xmlhttp = new XMLHttpRequest();xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.write(xmlhttp.responseText); }}xmlhttp.open("GET", "https://mathsolver.microsoft.com/zh", true) ...
寒假回校后,我把开发环境从家里电脑的win10切换到了学校的win7,不知道什么原因,本来可以正常运行的remote模块突然出现异常。
console信息:
1234renderer.js:443 Uncaught TypeError: remote.getCurrentWindow is not a function at applySettings (renderer.js:443:14) at renderer.js:458:19
重装模块与electron均无解。
查找原因两天之后,
通过翻找remote模块的package.json,我发现main字段默认指向renderer/index.js
遂将渲染进程中的
12var remote_path = path.join(__dirname + '/remote/main');
修改为
12var remote_path = path.join(__dirname + '/remote/renderer');
经检验,运行正常。
在此之前,这错误从未发生过。这 ...
最近看了一点某教授的变分课程(他写的教材应该是相对来说浅显易懂一些的了),想通过一些例题来巩固一下。
在菜市场里,我们可以看到这样的用来驱赶苍蝇的装置:
^图片,侵删^
在不考虑空气阻力的情况下,我想利用最小势能原理,求出下面吊着的这根绳子的函数表达式。
建立坐标系如下:
设绳子总长 ,圆盘半径 ,重力加速度 ,绳子线密度 。认为绳子上所有质元都处在同一平面。
设绳子形状对应函数 ,则单位长度
约束条件积分可得到
离心势能和重力势能共同构成质量元的势能,先来推导离心势能:
积分得到
重力势能表为
又有
2、3、4、5联立得
为了求势能最小值,利用Lagrange乘子法(这里我取了 为Lagrange乘子),此时Lagrangian为
代入Euler-Lagrange方程
还有边界条件
整理并部分展开,得到最终的表达式
另外,我问问怎么用matlab得到数值解?似乎很难整理出规范形式,带不进ode求解器。
我想借助bootstrap的accordion组件实现下图所示的效果但当我实现时却变成了下图的效果发现这个accordion组件会自带一个白背景,干扰颜色布局。就算给accordion的容器增加透明背景属性也无效。
直到我在devtools的css调试器中发现了这个:
在root中将其覆盖即可。