window.open 无法引入css style
时间: 2023-09-08 18:00:16 浏览: 289
window.open是JavaScript中的一个窗口打开方法,通过该方法可以打开一个新的浏览器窗口或者标签页。它本身并不负责加载页面的内容,而是用来指定要打开的URL地址。
由于window.open方法只是负责打开新的窗口,并不能直接影响新窗口的样式。CSS样式文件的引入需要在HTML中通过link标签或style标签来实现。
如果想要在新打开的窗口中应用CSS样式,可以在新窗口的HTML代码中引入CSS文件。可以通过在新窗口的HTML中加入link标签或style标签的方式来引入CSS样式文件,从而实现样式的应用。
例如,在新窗口的HTML中可以插入以下代码来引入CSS文件:
```html
<link rel="stylesheet" type="text/css" href="styles.css">
```
其中,styles.css是具体的CSS文件名,这个文件应当放在与新窗口HTML文件相同的目录下或者通过正确的相对路径引用。
总之,window.open方法本身不能直接引入CSS样式,但可以通过在新窗口的HTML中引入link标签或style标签的方式来引入CSS样式文件,并使其生效。
相关问题
怎么把本页面的CSS样式传到window.open 打开的新页面
要将本页面的 CSS 样式传到 `window.open` 打开的新页面,你可以在新页面中引入本页面的 CSS 文件,或者将本页面的 CSS 样式直接写入到新页面的 `<style>` 标签中。
以下是两种实现方式:
1. 在新页面中引入本页面的 CSS 文件:
在本页面中,你可以将 CSS 样式文件的链接地址作为参数传递给 `window.open` 方法:
```javascript
window.open('newPage.html?css=style.css', '_blank');
```
在新页面的 HTML 文件中,你可以通过 JavaScript 获取 URL 参数,然后将 CSS 文件的链接地址添加到 `<head>` 标签中:
```html
<head>
<meta charset="UTF-8">
<title>New Page</title>
<script>
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, '\\$&');
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
var cssFile = getParameterByName('css');
if (cssFile) {
var cssLink = document.createElement('link');
cssLink.rel = 'stylesheet';
cssLink.href = cssFile;
document.head.appendChild(cssLink);
}
</script>
</head>
```
2. 将本页面的 CSS 样式直接写入到新页面的 `<style>` 标签中:
在本页面中,你可以将 CSS 样式代码作为参数传递给 `window.open` 方法:
```javascript
var cssCode = 'body { background-color: #f0f0f0; }';
window.open('newPage.html?css=' + encodeURIComponent(cssCode), '_blank');
```
在新页面的 HTML 文件中,你可以通过 JavaScript 获取 URL 参数,然后将 CSS 样式代码添加到 `<head>` 标签中的 `<style>` 标签中:
```html
<head>
<meta charset="UTF-8">
<title>New Page</title>
<script>
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, '\\$&');
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
var cssCode = getParameterByName('css');
if (cssCode) {
var cssStyle = document.createElement('style');
cssStyle.type = 'text/css';
cssStyle.appendChild(document.createTextNode(cssCode));
document.head.appendChild(cssStyle);
}
</script>
</head>
```
弹窗式的登录窗口,HTML和CSS分开
当然可以将HTML和CSS分开,使用外部样式表的方式来引入CSS,代码如下:
HTML代码:
```
<!DOCTYPE html>
<html>
<head>
<title>Login Form</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<button id="open-login">Login</button>
<div class="overlay" id="overlay">
<div class="login-form">
<span class="close-btn" id="close-btn">×</span>
<form>
<label for="username">Username:</label>
<input type="text" id="username" name="username"><br><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password"><br><br>
<input type="submit" value="Submit">
</form>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
```
CSS代码:
```
/* 遮罩层样式 */
.overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
display: none;
align-items: center;
justify-content: center;
}
/* 登录表单样式 */
.login-form {
background-color: #fff;
padding: 20px;
border-radius: 5px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
display: none;
}
/* 关闭按钮样式 */
.close-btn {
position: absolute;
top: 10px;
right: 10px;
cursor: pointer;
}
```
JavaScript代码:
```
// 获取元素
var openLogin = document.getElementById("open-login");
var overlay = document.getElementById("overlay");
var closeBtn = document.getElementById("close-btn");
// 点击登录按钮显示登录表单和遮罩层
openLogin.onclick = function() {
overlay.style.display = "flex";
overlay.style.justifyContent = "center";
overlay.style.alignItems = "center";
overlay.style.zIndex = "999";
document.body.style.overflow = "hidden";
document.querySelector("form").reset();
}
// 点击关闭按钮隐藏登录表单和遮罩层
closeBtn.onclick = function() {
overlay.style.display = "none";
document.body.style.overflow = "auto";
}
// 点击遮罩层隐藏登录表单和遮罩层
window.onclick = function(event) {
if (event.target == overlay) {
overlay.style.display = "none";
document.body.style.overflow = "auto";
}
}
```
注意,JavaScript代码需要单独放在一个独立的文件中,并且需要在HTML代码中引入。
阅读全文