概述
我能够通过新的chrome.scripting
API成功注入我的 Javascript 脚本。
但是,我仍然无法window
通过此注入的脚本访问页面的对象。
我尝试过的
回到 MV2,我曾经执行以下操作:
async function getWindow() {
return new Promise(function (resolve, reject) {
const script = document.createElement('script');
script.text = `
const _window = JSON.stringify(window);
document.body.insertAdjacentHTML("beforebegin", "<div id='dummy' style='display:none;width:0;height:0;pointer-events:none;'>"+_window+"</div>")
`;
document.getElementsByTagName('head')[0].appendChild(script);
const _window = document.getElementById('dummy');
const data = JSON.parse(_window.innerText)
script.remove();
resolve(data);
});
}
(async () => {
const _window = await getWindow();
console.log(_window)
})();
Run Code Online (Sandbox Code Playgroud)
但这已经不可能了。它给了我以下错误:
拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self'”。启用内联执行需要“unsafe-inline”关键字、哈希值(“sha256-iAKY8pCLpBsSPttuizEMbuFVrucrXcGUoo/RYdGQEyw=”)或随机数(“nonce-...”)。
基于该错误,我找到了这个答案和这个问题的答案,但它并没有解决我的问题,因为前者适用于 MV2,后者使用外部脚本。我看不到让它与本地脚本一起工作。
我想要实现的目标
我想window
从我的 Chrome 扩展程序访问给定网站的对象。
其他注意事项
我已经坚持了几天,如果可以的话,请帮我。
我的根项目文件夹上有venv文件夹。当我尝试设置Python解释器时,它仅显示我机器中安装的Python,而不显示我的根文件夹中的Python。
在我格式化PC并安装Windows 10 64位之前,它工作正常。(在Windows 7 64位之前运行)
我尝试过的事情:
pythonPath
和/或手动设置路径venvPath
: "python.pythonPath": "F:/Web Dev/Python/Django/project_x_v2/backend/venv/Scripts/python.exe",
"python.venvPath": "F:/Web Dev/Python/Django/project_x_v2/backend/venv/Scripts/python.exe",
Run Code Online (Sandbox Code Playgroud)
它向我显示了占位符中的正确位置,但是我没有选择从下拉列表中选择的位置:
有什么想法可以解决这个问题吗?
非常感谢你。
编辑:
~\AppData\...
位于磁盘C:\中,而我的venv位于磁盘F:中。我不确定这是否相关;概述
我的 Koa 服务器中有一个自定义 REST API,我可以使用 React 在我的 Shopify 应用程序中很好地访问它。但是,当我尝试从脚本标签访问它时,出现 CORS 错误。
问题
我无法从脚本标签访问我的自定义 REST API 数据,但我可以从 Postman 和我的 React 应用程序访问它。
我尝试过的
代码
服务器.js
server
.use(router.routes())
.use(router.allowedMethods())
.use(CORS({ origin: "*" }));
router.get("/api/test", async (ctx, next) => {
ctx.body = {
llama: "123",
};
});
Run Code Online (Sandbox Code Playgroud)
script_tag.js
async function hello() {
await _loadScript(
"https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.2/axios.min.js",
);
const data = await window.axios.get(
"https://3b1b4258759f.ngrok.io/api/test?shop=panda-app-tests.myshopify.com",
{
crossDomain: true,
},
);
console.log(data);
}
Run Code Online (Sandbox Code Playgroud)
有什么想法可以在不使用cors-anywhere 的情况下解决这个问题吗?预先非常感谢您。
我已经尝试解决这个问题几个小时了,如果可以的话请帮助我。
当我尝试get
在 React 应用程序中使用 axios 向 DRF Rest API 发出请求时,它返回 403。
应用程序.js:
axios
.get(API_POSTS, {
headers: {
Authorization: `Token 27dbb4dd8299792c8c52022f829da4ecec22f437`
}
})
.then(res => {
console.log("Success");
})
.catch(error => {
console.log(error);
});
Run Code Online (Sandbox Code Playgroud)
设置.py:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
# 3rd-party apps
'rest_framework',
'rest_framework.authtoken',
'allauth',
'allauth.account',
'allauth.socialaccount',
'rest_auth',
'rest_auth.registration',
'corsheaders',
# Local
'posts.apps.PostsConfig',
'users.apps.UsersConfig',
]
CORS_ORIGIN_WHITELIST = [
'http://localhost:3000',
]
# Rest Framework
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
],
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication' …
Run Code Online (Sandbox Code Playgroud) 我有一个包含以下内容的文件:
a
b
b
c
Run Code Online (Sandbox Code Playgroud)
我需要找到所有重复项并删除它们,所以它应该是这样的:
a
c
Run Code Online (Sandbox Code Playgroud)
命令“编辑>排列行>唯一”不会删除所有出现的情况。有什么建议么?谢谢你!
我有一个使用以下架构的自定义部分:
{% schema %}
{
"name": "Custom",
"settings": [
{
"type": "textarea",
"id": "custom_text_product",
"label": "Insert name of the product here",
"default": "Product"
},
{
"type": "textarea",
"id": "custom_text_msg",
"label": "Custom text",
"default": "Insert text here"
}
]
}
{% endschema %}
Run Code Online (Sandbox Code Playgroud)
基本上我想要的是从每个 textarea 中获取文本,通过 Javascript 进行操作,然后将其添加到 DOM 中。
通过.liquid
我会简单地做{{ section.settings.id }}
,但我不知道如何在 Javascript 中访问它们。因为它是一个大文本,我也不能将它作为数据属性添加到 DOM 中。
我试过遵循这个,但没有成功。
有人可以帮助我或向我推荐有关这方面的文件吗?
非常感谢!
我有一个包含以下元素的数组:
A
B
B
C
B
Run Code Online (Sandbox Code Playgroud)
如果一个项目出现多次,我必须删除它的所有出现次数.因此,它会是这样的:
A
C
Run Code Online (Sandbox Code Playgroud)
我已经找到了很多关于如何删除其他重复元素的例子,但仍然保留了"原始"元素,其中我找不到更接近它的东西,我真的迷失了.
我考虑过保存一个对象:1.项目的价值; 2.它出现多少次; 3.所有外观的位置.
如果出现的时间超过1,我会删除数组中的所有以下位置.这是个好主意吗?最好的方法是什么?
非常感谢你!
javascript ×2
reactjs ×2
arrays ×1
django ×1
jquery ×1
koa ×1
liquid ×1
python ×1
python-venv ×1
rest ×1
script-tag ×1
shopify ×1
shopify-app ×1
string ×1
sublimetext2 ×1
token ×1