多屏幕尺寸测试
多屏幕尺寸测试
toggle device mode
按钮,然后就可以在不同的设备屏幕尺寸下进行调试:

无线模拟
无线模拟方案主要有三点
-
http 协议修改- userAgent -
视图渲染
- 无线模拟 -
事件模拟
- touch
HTTP 协议修改
/**
* 更新ua
*/
function replaceHeader(requestHeaders) {
var newHeaders = [];
for (var i = 0; i < requestHeaders.length; i++)
if (requestHeaders[i].name != "User-Agent")
newHeaders.push(requestHeaders[i]);
else {
var new_value = requestHeaders[i].value;
//这里将user-agent声明为iphone
newHeaders.push({
name: "User-Agent",
value:
"Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"
});
}
return newHeaders;
}
/**
* 监听通信
*/
function updateListeners() {
let listener = function(details) {
var header_map = {
requestHeaders: details.requestHeaders
};
if (!uaIsPhone) {
return header_map;
}
if (
details &&
details.url &&
details.requestHeaders &&
details.requestHeaders.length > 0
)
header_map = {
requestHeaders: replaceHeader(details.requestHeaders)
};
return header_map;
};
chrome.webRequest.onBeforeSendHeaders.addListener(
listener,
{
urls: ["http://*/*", "https://*/*"]
},
["requestHeaders", "blocking"]
);
}
监听
服务端收到的
此时浏览器的
function toMobile() {
var head = document.querySelector("head");
if (!head) {
setTimeout(turnPhone, 100);
return;
}
var _turnP = document.createElement("script");
_turnP.type = "text/javascript";
_turnP.innerText = [
"Object.defineProperty(window.navigator, 'userAgent', { get: function(){ return 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1'; } });",
"Object.defineProperty(window.navigator, 'vendor', { get: function(){ return 'Apple, Inc.'; } });",
"Object.defineProperty(window.navigator, 'platform', { get: function(){ return 'iPhone'; } });"
].join("");
head.appendChild(_turnP);
}
视图渲染
通常我们可以使用
"content_scripts": [ {
"all_frames": true,
"js": [ "js/main.js" ],
"css": ["css/main.css"],
"matches": [ "http://*/*", "https://*/*" ],
"run_at": "document_start"
} ]
html.terminal-mobile {
width: 400px !important;
}
document.querySelector("html").setAttribute("class", "udata-mobile");
现在从显示宽度上,似乎像手机的宽度了,但是有些元素却超出
html.terminal-mobile {
width: 400px !important;
transform: translate3d(0px, 0px, 0px);
}
现在再看,
我们加上手机外框,通常会考虑会上下
html.udata-mobile {
transform: translate3d(0px, 0px, 0px);
height: 100%;
border-left-width: 10px;
border-right-width: 10px;
border-top-width: 80px;
border-bottom-width: 80px;
box-sizing: border-box; //将border设置进html height
margin-left: 200px;
width: 400px;
border-color: transparent;
border-style: solid;
border-image: url(https://s.tbcdn.cn/g/udata/udata-pi/iphoneBg.png) 146 20
stretch;
background-color: rgb(255, 255, 255) !important;
}