小编Sha*_*dow的帖子

如何修改另一个函数接收的XMLHttpRequest响应文本?

我试图修改由我无法修改的函数收到的responseText.这个函数创建了一个我可以附加的XMLHttpRequest,但是我无法以允许我在原始函数接收内容之前修改内容的方式"包装"responseText.

这是完整的原始功能:

function Mj(a, b, c, d, e) {
    function k() {
        4 == (m && 'readyState' in m ? m.readyState : 0) && b && ff(b) (m)
    }
    var m = new XMLHttpRequest;
    'onloadend' in m ? m.addEventListener('loadend', k, !1)  : m.onreadystatechange = k;
    c = ('GET').toUpperCase();
    d = d || '';
    m.open(c, a, !0);
    m.send(d);
    return m
}
function ff(a) {
    return a && window ? function () {
        try {
            return a.apply(this, arguments)
        } catch(b) {
            throw …
Run Code Online (Sandbox Code Playgroud)

javascript ajax monkeypatching xmlhttprequest

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

将多个文件重命名(或删除前缀)到每个号码

我正在尝试更改当前文件夹中的所有文件名,我试图通过删除文件前缀(每个文件都有一个公共前缀)或将其名称更改为其计数(如果有5个文件,文件名)来实现此目的将是1.txt 2.txt 3.txt 4.txt 5.txt).

现在我已经在cmd中找到了ren命令并且稍微玩了一下但到目前为止我无法实现结果而且我只能在cmd中运行它,所以不能使用批处理文件.

这是我得到的最接近的,但它只添加了一个前缀:

FOR %f IN (*.*) DO ren %f prefix%f
Run Code Online (Sandbox Code Playgroud)

我尝试过相反的做法:

FOR %f IN (*.*) DO ren prefix%f %f
Run Code Online (Sandbox Code Playgroud)

但是,当然,没有工作,所以我现在寻求帮助和一些解释,如果可能的话(我想了解这些事情是如何工作的).在此先感谢您的帮助.

windows cmd renaming

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

如何在javascript生成的元素中设置具有区分大小写的名称的属性

svg在javascript中创建了一个元素,我需要设置一个区分大小写的属性:viewBox.

该元素的创建方式如下: var svgElem = document.createElement('svg');

问题是当它通过svgElem.setAttribute("viewBox", "0,0,100,100")DOM 设置该属性并附加到DOM时,结果元素显示如下: <svg viewbox="0,0,100,100"></svg>

这不起作用,因为viewBox它区分大小写,如果字母B是小写的,它将不会产生任何影响.

IE只允许这样的情况使用IFlag参数,但是我的目标受众仅限于FireFox和Chrome用户,我没有找到IFlag setAttribute.

有没有一种方法可以在不使用innerHTML和无库javascript的情况下完成这项工作?

编辑:我也尝试使用点符号没有成功 svg.viewBox = "0,0,100,100"

html javascript svg

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

设置为`run_at``document_start`的Chrome扩展程序运行得太快了?

编辑:我的Chrome浏览器出现问题并与我的脚本产生冲突,无论问题来源是什么,都可以完全重新安装.如果我碰巧找出导致它的原因,我会把它包含在这里.

编辑2:只是为了让在2017年阅读此内容的人知道我没有忘记这一点,自从我之前的编辑以来我从未遇到过这个问题.

编辑3:这是2019年,到目前为止,我再也没遇到过这个问题.


我一直在学习如何创建一个简单的Chrome扩展程序,它是一个用户脚本端口.该脚本与Tampermonkey完美配合,设置run atdocument-start,所有需要从头开始捕获的必要事件都被捕获.

但是,当我在Chrome扩展程序中设置相同的设置时,我发现相同的运行设置比Tampermonkey更快,导致第一个函数失败:( Uncaught TypeError: Cannot call method 'appendChild' of null.)因为它尝试将一个脚本元素附加到该head部分,该部分不存在直到0.010秒之后.

到目前为止,我的脏解决方案是使用setInterval定时器设置为10 的函数来检查是否document.head存在,然后在条件为真时继续执行代码.

有没有什么方法可以让我正确地工作,而不必诉诸setInterval或可能复制Tampermonkey的grant none选项,似乎在网页上下文中运行用户脚本?

以下是我的manifest.json文件:

{
    "manifest_version": 2,
    "content_scripts": [ {
        "js":        [ "simpleuserscript.user.js" ],
        "matches":   [ "https://www.google.com/*"],
        "run_at":    "document_start"
    } ],
    "converted_from_user_script": true,
    "description":  "Chrome extension",
    "name":         "Testing",
    "version":      "1"
}
Run Code Online (Sandbox Code Playgroud)

如果Chrome将采用该afterscriptexecute事件,所有这一切都可以避免,但在此之前,我仍然坚持这一load事件.我提前感谢你提供的任何帮助.


编辑:我已经尝试了回复中的建议:使用不同的run at点,使用DOMContentLoaded和追加document.documentElement.所有都不成功,因为:1和2使脚本错过早期事件,3返回与尝试追加时相同的TypeError document.head.

脚本必须插入/运行时document.readyState = loading …

javascript google-chrome userscripts google-chrome-extension content-script

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

将文本网址转换为可点击的链接

我已经在这种情况下乱跑了,我已经尝试了我在stackoverflow中找到的所有答案,并尝试使用linkify但是没有成功,无法使其工作,我宁愿不必使用任何Javascript库,jquery,mootools等......

所以这就是我想要实现的目标;

我的每个帖子都有一个评论部分,我希望每次用户在评论中发布网址时:

<div id="container">
Nice, here is the respective link that you were asking for: www.linkforanywebsite.com
</div>
Run Code Online (Sandbox Code Playgroud)

变成这样:

<div id="container">
Nice, here is the respective link that you were asking for: <a href="www.linkforanywebsite.com">www.linkforanywebsite.com</a>
</div>
Run Code Online (Sandbox Code Playgroud)

任何指南/ jsfiddle工作示例都非常感谢

感谢您的时间和帮助!

javascript

11
推荐指数
0
解决办法
3万
查看次数

是否可以找到导致页面滚动的功能

我试图找到哪个函数导致页面在悬停元素时滚动,但到目前为止我什么也没得到.

没有特定的侦听器附加到元素,从我可以理解它通过mouseover侦听器或类似物触发,元素包含许多附加到它们的侦听器.

这也不是一个浏览器功能,它特定于javascript,因为当我将大部分代码置空时它不会发生.

我已经尝试过如下null所知的滚动方法:

[
    'scroll',
    'scrollTo',
    'scrollBy',
    'scrollByLines',
    'scrollByPages',
    'scrollX',
    'scrollY',
    'scrollMaxX',
    'scrollMaxY',
    'scrollHeight',
    'scrollIntoView',
    'scrollTop',
    'scrollTopMax'
].forEach(function(a) {
    window[a] = null;
    document.documentElement[a] = null;
})
Run Code Online (Sandbox Code Playgroud)

希望当神秘函数试图调用scroll方法时它会抛出一个错误,但它仍然正常滚动没有任何问题.

我也尝试过听滚动事件,但没有返回的参数让我更接近负责任的功能.

我试过在缩小的源代码中寻找它,但常见的scroll搜索返回266结果,我甚至不确定它是否使用典型的滚动方法.

有什么方法可以找到使页面滚动的功能吗?

html javascript debugging

7
推荐指数
2
解决办法
1588
查看次数

CSS 线性渐变看起来不像 Photoshop 的,可以修复吗?

在使用 CSS black to transparent linear-gradient 时,我注意到它不会逐渐淡化为透明,而是使灰色区域逗留的时间更长,并且只有在接近结束时它才变得透明,并有明显的限制。

注意到这一点后,我决定使用具有精确属性的 photoshop 渐变,它看起来更好,渐变从黑色平滑线性地变为透明。

以下包含一个示例,左侧显示 CSS 线性渐变,右侧显示 Photoshop 生成的渐变 - 两者都是使用完全相同的属性创建的:

#css, #ps{
  height:100px;
  width:50%;
  }
#css{
  float:left;
  background:linear-gradient(black, transparent);
  }
#ps{
  float:right;
  background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAMAAABw8qpSAAABLFBMVEUCAgIDAwMEBQUGBgYICAgJCQkLCwsNDQ0PDw8RERETExMVFRUXFxcZGRkbGxsdHh4gICAiIiIkJSUnJycpKiosLCwvLy8xMjI0NDQ3Nzc5Ojo8PDw/Pz9CQkJFRUVISEhLS0tOTk5RUVFUVFRXV1daWlpdXV1gYGBjY2NmZmZpamptbW1wcHBzc3N2dnZ5eXl8fX2AgICDg4OGhoaJiYmMjIyQkJCTk5OWlpaZmZmcnJyfn5+ioqKlpqaoqamrrKyvr6+ysrK0tbW3uLi6urq9vb3AwMDDw8PGxsbJycnLy8vOzs7R0dHT09PW1tbY2Njb29vd3d3g4ODi4uLk5OTm5ubp6enr6+vt7e3v7+/x8fHy8vL09PT29vb4+Pj5+fn7+/v8/Pz+/v4AAAE6GCMnAAAAY3RSTlP+/Pv5+Pb08vHv7evp5uTi4N3b2NbT0c7LyMbDwL26t7SxrquopaKfnJmWk4+MiYaDgHx5dnNwbGlmY2BdWldUUU5LSEVCPzw5NzQxLiwpJyQiHx0bGRYUEhAODQsJBwYEAwEIFXNRAAAAEElEQVQIHWNJZpnLwjj0IQCJ8QLzQI0QnQAAAABJRU5ErkJggg==");
}
Run Code Online (Sandbox Code Playgroud)
<div id="css"></div>
<div id="ps"></div>
Run Code Online (Sandbox Code Playgroud)

如您所见,差异非常明显。是否可以将 Photoshop 的真实线性渐变复制到 CSS 中,或者我唯一的选择是使用 base64/png 技巧来实现实际的线性渐变?因为目前 css 的 linear-gradient 不是线性的,实际上我可以看到它创建了一个easieInOut-gradient而不是线性。

css linear-gradients

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

如何在 Paging 3 库中检查列表大小或空列表

按照此处提供的说明,我已经能够成功实现新的 alpha07 版本的 Paging 3 库:https : //developer.android.com/topic/libraries/architecture/paging/v3-paged-data#g​​uava-livedata

但是,现在我需要检查返回的列表是否为空以便向用户显示视图或文本,但我无法在其分页设计的流结构中附加任何检查。

目前,这是我onViewCreated在遵循他们的指南后在 Java 中使用我的代码的方式:

        MyViewModel viewModel = new ViewModelProvider(this).get(MyViewModel.class);

        LifecycleOwner lifecycleOwner = getViewLifecycleOwner();
        Lifecycle lifecycle = lifecycleOwner.getLifecycle();
        Pager<Integer, MyEntity> pager = new Pager<>(new PagingConfig(10), () -> viewModel.getMyPagingSource());
        LiveData<PagingData<MyEntity>> pagingDataLiveData = PagingLiveData.cachedIn(PagingLiveData.getLiveData(pager), lifecycle);

        pagingDataLiveData.observe(lifecycleOwner, data -> adapter.submitData(lifecycle, data));
Run Code Online (Sandbox Code Playgroud)

我尝试.filter在我的datain上附加 a adapter.submitData(lifecycle, data),但null尽管列表为空,但它从未收到项目。

在这种情况下,如何检查提交给适配器的数据何时为空?我在他们的文档中找不到任何指针。

编辑:这是我找到的解决方案,在这里发布是因为所选的答案严格来说不是解决方案,也不是在 Java 中,而是引导我找到它的答案。

我有一个附加LoadStateListener我的转接器,监听时LoadTypeREFRESHLoadState的NotLoading,再检查是否adapter.getItemCount是0。

LoadType对于这种情况,可能采用不同的方法更合适,但到目前为止,刷新对我来说是有效的,所以我选择了那个。

示例:

// …
Run Code Online (Sandbox Code Playgroud)

android android-paging android-paging-library

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

Android - 在 Compose with Material 3 中创建自定义颜色

我第一次探索 Compose + Material 3,在尝试实现自定义颜色时遇到了很大的困难。

\n

我的意思是根据 Compose 之前的工作方式执行以下操作:

\n

我有我的自定义属性attrs.xml

\n
<?xml version="1.0" encoding="UTF-8"?>\n<resources>\n    <declare-styleable name="CustomStyle">\n        <attr name="myCustomColor"\n            format="reference|color"/>\n    </declare-styleable>\n</resources>\n
Run Code Online (Sandbox Code Playgroud)\n

并且该自定义属性可以在我的光明和黑暗中使用styles.xml

\n
<?xml version="1.0" encoding="utf-8"?>\n<resources xmlns:tools="http://schemas.android.com/tools">\n    <style name="AppTheme" parent="Theme.Material3.DayNight.NoActionBar">\n        <item name="myCustomColor">@color/white</item> <!-- @color/black in the dark style config -->\n    </style>\n</resources>\n
Run Code Online (Sandbox Code Playgroud)\n

然后我可以在任何我想要的地方使用它,无论是在代码中还是在布局中:

\n
<com.google.android.material.imageview.ShapeableImageView\n    android:layout_width="24dp"\n    android:layout_height="24dp"\n    android:background="?myCustomColor"\n
Run Code Online (Sandbox Code Playgroud)\n

这非常简单实用,因为它会自动解析浅色和深色,而我所需要的只是使用自定义颜色参考。

\n

但在 Compose with Material 3 中我找不到任何地方解释如何完成这样的事情。

\n

在材质 2 中,可以执行以下操作:

\n
val Colors.myExtraColor: Color\n    get() = if (isLight) Color.Red else Color.Green\n
Run Code Online (Sandbox Code Playgroud)\n

但在材料 3 中这不再可能:

\n …

android material-design android-compose

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

带有 Jetpack 导航组件的自定义工具栏

我有一个问题。我正是需要这个工具栏。

在此处输入图片说明

工具栏标题必须居中,向上按钮的颜色必须与标题颜色不同。例如,我可以使用这些代码行实现居中标题。

     <androidx.appcompat.widget.Toolbar
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="?attr/colorPrimary"
            android:theme="?attr/actionBarTheme"
            android:minHeight="?attr/actionBarSize"
            android:id="@+id/tb_main"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            android:gravity="center">

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:id="@+id/tb_title_main"
                android:textColor="@color/black_80"
                android:textSize="20sp"
                />

    </androidx.appcompat.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

这是在我的 MainActivity

    val toolbar = binding.tbMain
    toolbar.tb_title_main.text = "Centered Text "
    setSupportActionBar(toolbar)
    supportActionBar?.setDisplayShowTitleEnabled(false)
Run Code Online (Sandbox Code Playgroud)

但我想要使用 Jetpack 导航组件设置工具栏,以便更好、更轻松地导航。当我在 MainActivity 中使用这些代码行设置工具栏时,就会发生这种情况。

    val navController = findNavController(R.id.nav_host_fragment)
    val toolbar = binding.tbMain
    setSupportActionBar(toolbar)
    val appBarConfiguration = 
    AppBarConfiguration(navController.graph)
    toolbar.setupWithNavController(navController, 
    appBarConfiguration)
Run Code Online (Sandbox Code Playgroud)

https://ibb.co/6v8PPmR(另一张图片)

我花了将近 4 个小时来处理这些。我尝试了很多解决方案,但没有任何效果。

因此,使用 setupWithNavController 时可以将工具栏中的文本居中还是我应该提出自己的自定义解决方案?

android

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