我要求
blackbox.ai
生成一个用户脚本,为 Array.prototype.findLast
创建一个 polyfill。console.log
消息,这意味着脚本已执行。 Array.prototype.findLast
时,它显示 undefined
。
这是用户脚本:
// ==UserScript==
// @name Array.prototype.findLast Polyfill
// @author ychaouche
// @namespace ychaouche.scripts
// @version 2024-11-04
// @description Add findLast method to Array.prototype if it doesn't exist
// @match *://*/*
// ==/UserScript==
(function() {
'use strict';
if (!Array.prototype.findLast) {
Array.prototype.findLast = function(callback, thisArg) {
if (this == null) {
throw new TypeError('Array.prototype.findLast called on null or undefined');
}
if (typeof callback !== 'function') {
throw new TypeError('callback must be a function');
}
const list = Object(this);
const length = list.length >>> 0;
for (let i = length - 1; i >= 0; i--) {
if (i in list) {
const element = list[i];
if (callback.call(thisArg, element, i, list)) {
return element;
}
}
}
return undefined;
};
console.log('Array.prototype.findLast polyfill has been added.');
} else {
console.log('Array.prototype.findLast already exists.');
}
// Optional: Test the polyfill
var testArray = [1, 2, 3, 4, 5];
var lastEven = testArray.findLast(num => num % 2 === 0);
console.log('Last even number:', lastEven);
})();
这是显示
console.log
消息的控制台跟踪,以及页面加载后我尝试自己访问 undefined
时的 Array.prototype.findLast
:
Array.prototype.findLast polyfill has been added. Array.prototype.findLast-Polyfill.user.js:37:17
Last even number: 4
>> Array.prototype.findLast
undefined
问题不在于脚本本身,
这是我访问的网站的 CSP 政策。
该脚本在另一个网站上运行良好。
我用的是火狐浏览器,
并且您似乎无法在 Firefox 中禁用特定网站或选项卡的 CSP。