js ie 浏览器的 document.execCommand("Saveas") 问题 80C

js ie 浏览器的 document.execCommand("Saveas",true,"33.png") ;没变还是原来文件名

然后 把 文件名赋值后就没反映了

IframeReportImg为iframe

var mycardnumner //身份id
var imagetype //图片后缀
var imageindex //图片索引
document.getElementById('IframeReportImg').contentWindow.document.execCommand("Saveas",true, mycardnumner+"_"+alts+"_"+imageindex+"_"+imagetype);

4个回答

最好是服务器端设置content-disposition为attachment下载兼容性好点,saveas只有ie支持,测试了第三个名字重命名也没用效果,但是可以弹出保存对话框,如果你的代码添加name参数后弹不出保存窗口应该是js脚本出错了,如变量名打错而来了,没注意大小写什么的

你的alts变量就没见定义

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 非常正确!
接近 2 年之前 回复
showbo
支付宝加好友偷能量挖 要控制文件名得服务器端来做,自己看链接里面的说明,filename
接近 2 年之前 回复
showbo
支付宝加好友偷能量挖 回复ancong01: 这个浏览器的api,改不了也没有办法
接近 2 年之前 回复
ancong01
初学者的浅谈 ("Saveas",true,"33.png") 为什么改不了名字
接近 2 年之前 回复
ancong01
初学者的浅谈 alts 定义了
接近 2 年之前 回复
showbo
支付宝加好友偷能量挖 http://www.w3dev.cn/article/20120904/Content-Disposition-inline-attachment.aspx
接近 2 年之前 回复

前段时间我也遇到过这样的问题 有可能是电脑本身兼容性的问题,也有可能是这个浏览器和你的电脑的不兼容 你可能忽视的问题很多 不单单是这个软件
自身的问题 你可以再试着找找别的解决办法。

ancong01
初学者的浅谈 你是怎样解决的 ?
接近 2 年之前 回复

是不是版本问题 导致一些东西不兼容

这个方法都是之前IE浏览器自身定义的,不是web标准上面的,而且本身JavaScript对本地文件的操作是很少被允许的,可能会存在很多安全问题。
建议换个实现思路,用后台实现比较好

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
JavaScript中,document.execCommand('SaveAs')

JavaScript中,document.execCommand('SaveAs')的保存路径选取后如何自动识别该路径?以及所保存的文件名?

javascript safari浏览器使用document.execCommend()中文兼容bug

由于需求需要编写一个简易编辑器,仅仅只有加粗,倾斜和下划线,要求不能使用第三方库,所以就使用了div的contenteditable="true"属性加document.execCommend()的api来自己编写, 编写后发现了safari的中文兼容bug,查看了网上许多简易编辑的案例,发现都有这个bug, 即:safari 英文输入切换正常 中文输入模式下,点击取消加粗,依然是加粗样式 ``` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.min.js"></script> <style> .content-edit i { font-style: italic !important; } .content-edit b { font-weight: bold !important; } .upload-header { width: 100%; box-sizing: border-box; padding: 43px 58px 31px 58px; display: flex; align-items: center; justify-content: space-between; } .upload-header div { width: 156px; font-size: 52px; } .upload-header i { width: 37px; height: 69px; display: block; background: url("../../static/fanhui.svg") no-repeat; background-size: 100%; } .upload-header .center { text-align: center; } .upload-header .right { text-align: right; } .title-edit { padding: 54px 58px 48px 58px; box-sizing: border-box; border-bottom: 1px solid rgba(216, 216, 216, 1); font-size: 42px; font-weight: 600; color: rgba(54, 54, 54, 1); } .title-edit input { font-weight: 600; color: rgba(54, 54, 54, 1); width: 100%; border: none; } .content-edit { height: 300px; padding: 48px 58px; box-sizing: border-box; overflow-y: scroll; font-size: 42px; color: rgba(73, 73, 73, 1); } .content-edit * { font-size: 42px; color: rgba(73, 73, 73, 1); } .edit-tool { padding: 0 58px; box-sizing: border-box; width: 100%; height: 144px; display: flex; justify-content: space-between; border: 1px solid rgba(218, 218, 218, 1); border-left: none; border-right: none; } .edit-tool .left .active { color: blue; } .edit-tool .right .active { border: 1px solid #c8c8c8; } .edit-tool .left { height: 144px; display: flex; align-items: center; } .edit-tool .right>div { float: left; overflow: hidden; margin-top: 15px; } .edit-tool .left input { display: block; width: 40px; padding: 14px 55px; border: none; font-size: 64px; background: none; } .edit-tool .left input:nth-child(1) { padding: 14px 55px; padding-left: 14px; } .underline { text-decoration: underline; } .edit-tool .right button { padding: 0; display: block; overflow: hidden; width: 60px; height: 60px; border-radius: 100% 100% 100% 100%; -webkit-appearance: none; margin: 24px 24px; border: none; } .edit-tool .right .active { border: 10px solid #c8c8c8; } </style> </head> <body> <!-- app --> <div id="app"> <div class="edit-container"> <header class="upload-header"> <div class="left" @click="returnPage"> <i></i> </div> <div class="center">编辑</div> <div class="right">保存</div> </header> <div class="title-edit"> <input type="text" v-model="htmlObj.title"> </div> <div v-html="htmlObj.content" spellcheck="false" class="content-edit" contenteditable="true" @input="editChange" ref="editor" @paste="pasteText" @click="onClick($event)"> <!-- <p>{{htmlObj.content}}</p> --> </div> <!-- <new-edit></new-edit> --> <div class="edit-tool"> <div class="left"> <input class="bold" :class="{ active: iconList[0].choose }" value="B" type="button" @click="iconClick($event, 'bold', 'style')"> <input class="bias" :class="{ active: iconList[1].choose }" value="I" type="button" @click="iconClick($event, 'italic', 'style')"> <input class="underline" :class="{ active: iconList[2].choose }" value="U" type="button" @click="iconClick($event, 'underline', 'style')"> </div> <div class="right"> <div> <button style="background:rgba(110,110,110,1);" :class="{ active: iconList[3].choose }" @click="iconClick($event, 'foreColor1', 'style')"></button> </div> <div> <button style="background:rgba(241,89,108,1);" :class="{ active: iconList[4].choose }" @click="iconClick($event, 'foreColor2', 'style')"></button> </div> <div> <button style="background:rgba(241,223,3,1);" :class="{ active: iconList[5].choose }" @click="iconClick($event, 'foreColor3', 'style')"></button> </div> <div> <button style="background:rgba(80,227,194,1);" :class="{ active: iconList[6].choose }" @click="iconClick($event, 'foreColor4', 'style')"></button> </div> </div> </div> </div> </div> </body> <script> var app = new Vue({ el: "#app", data() { return { innerText: "", htmlObj: { title: "", content: "" }, selectedRange: "", iconList: [{ // hover名字 name: "粗体", // 点击事件处理 type: "bold", // 是否被选中 canChoose: true, choose: false }, { name: "斜体", type: "italic", canChoose: true, choose: false }, { name: "下划线", type: "underline", canChoose: true, choose: false }, { name: "字体颜色", type: "foreColor1", canChoose: true, drop: true, choose: false }, { name: "字体颜色", type: "foreColor2", drop: true, canChoose: true, choose: false }, { name: "字体颜色", type: "foreColor3", drop: true, canChoose: true, choose: false }, { name: "字体颜色", type: "foreColor4", drop: true, canChoose: true, choose: false } ], activeIconList: [] }; }, mounted() { window.localStorage.setItem( "moduleList", '[{"type":1,"title":"12","content":"<p>13333</p>"}]' ); this.htmlObj = JSON.parse(window.localStorage.getItem("moduleList"))[0]; }, methods: { onClick(event) { let that = this; console.log(event); if (event.target.tagName == 'DIV') { return false; } this.activeIconList = []; let target = event.target; this.changeTagStyle(target); let newArr = this.activeIconList.filter(function (x, index, self) { return self.indexOf(x) === index; }); for (let i = 0; i < this.iconList.length; i++) { if (newArr[i] === "B") { this.iconList[0].choose = true; } else if (newArr[i] === "U") { this.iconList[2].choose = true; } else if (newArr[i] === "I") { this.iconList[1].choose = true; } else { this.iconList[i].choose = false; } } }, isToolTag(el) { if (el.tagName == "B") return true; else return false; }, changeTagStyle(el) { if ( el.tagName == "B" || el.tagName == "I" || el.tagName == "U" || el.tagName == "FONT" ) { this.activeIconList.push(el.tagName); console.log(el.parentNode.tagName); } else if (el.tagName == "DIV") { return; } this.changeTagStyle(el.parentNode); }, changeStyle(type) { switch (type) { case "bold": console.log("blod"); console.log(this.iconList[0].choose); if (window.navigator.userAgent.indexOf('AppleWebKit') > -1 && this.iconList[0].choose === true) { console.log('取消选中 光标后移') let sel = document.getSelection(); console.log(sel.anchorNode.nodeType); //文本节点为3,元素节点为1 console.log(sel.anchorNode.parentNode.parentNode); // window.getSelection().removeAllRanges(); // console.log(sel); this.keepLastIndex(sel.anchorNode.parentNode.parentNode); // let cursorPos = selection.anchorOffset; // let oldContent = selection.sel.nodeValue; // let newContent = // oldContent.substring(0, cursorPos) + // toInsert + // oldContent.substring(cursorPos); // selection.anchorNode.nodeValue = newContent; // let range=sel.getRangeAt(0); // range.setStart(range.startContainer,3); // console.log(sel); // console.log(sel.getRangeAt(0)); // console.log(sel.focusOffset); } document.execCommand("bold", false); // document.execCommand("insertHtml", 'a',false); break; case "underline": if (this.iconList[2].choose === false) { document.execCommand("underline", false); } else { document.execCommand("removeFormat", false); } // document.execCommand("underline", false); break; case "italic": document.execCommand("italic", false); break; case "foreColor1": document.execCommand("foreColor", 0, "rgba(110,110,110,1)"); break; case "foreColor2": document.execCommand("foreColor", 0, "rgba(241,89,108,1)"); break; case "foreColor3": document.execCommand("foreColor", 0, "rgba(241,223,3,1)"); break; case "foreColor4": document.execCommand("foreColor", 0, "rgba(80,227,194,1)"); break; default: console.log("none"); } }, // insertAfter(newNode, curNode) { // console.log(curNode.parentNode); // curNode.parentNode.insertBefore(newNode, curNode.nextElementSibling); // }, iconClick(event, type, dropType) { event.preventDefault(); console.log(event); this.$refs.editor.focus(); // let $el=this.$refs.editor; // this.keepLastIndex($el); this.selectedRange = this.getSelect(); if (event.target.classList.contains("active")) { //解决safari中文光标位置 //获取光标所在位置的节点, console.log( window.getSelection().getRangeAt(0).startContainer.parentElement ); let el = window.getSelection().getRangeAt(0).startContainer.parentElement; // let span=document.createElement('span'); // this.insertAfter(span,el); // console.log(el); // el.focus(); // var selection = window.getSelection(); // let span = document.createElement("span"); // let range = document.createRange(); // range.collapse(false); // range.insertNode(span); // selection.removeAllRanges(); /*清空所有Range对象*/ // range.setStart( // span, // 0 // ); // range.setEnd( // span, // 1 // ); // selection.addRange(range); // this.placeCaretAtEnd(span); } // 恢复光标 // this.restoreSelection(); // 恢复光标 // this.restoreSelection(); // 修改所选区域的样式 this.changeStyle(type); this.$nextTick(() => { // if (dropType) {//下拉菜单的type // type = dropType // } //改变当前元素的样式 let sourceArr = JSON.parse(JSON.stringify(this.iconList)); let arr = sourceArr.map((val, index) => { if (type === val.type && val.canChoose) { val.choose = val.choose ? false : true; } // else { // if (val.drop) { // val.choose = false; // } // } return val; }); // if (type === 'clear') { // var a = this.getSelect() // if (a.startOffset === a.endOffset) { // document.execCommand('insertHTML', false, '&nbsp') // // return false // } // arr = arr.map((val, index) => { // val.choose = false // return val // }) // } this.iconList = arr; }); }, //获取选中 getSelect() { if (window.getSelection) { /*主流的浏览器,包括chrome、Mozilla、Safari*/ var sel = window.getSelection(); console.log(sel.getRangeAt(0)); if (sel.rangeCount > 0) { return sel.getRangeAt(0); } } else if (document.selection) { /*IE下的处理*/ return document.selection.createRange(); } return null; }, placeCaretAtEnd(el) { //传入光标要去的jq节点对象 el.focus(); if ( typeof window.getSelection != "undefined" && typeof document.createRange != "undefined" ) { var range = document.createRange(); range.selectNodeContents(el); range.collapse(false); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); } else if (typeof document.body.createTextRange != "undefined") { var textRange = document.body.createTextRange(); textRange.moveToElementText(el); textRange.collapse(false); textRange.select(); } }, restoreSelection() { var selection = window.getSelection(); console.log(this.selectedRange); let range = document.createRange(); if (this.selectedRange) { try { selection.removeAllRanges(); /*清空所有Range对象*/ range.setStart( this.selectedRange.startContainer, this.selectedRange.startOffset ); range.setEnd( this.selectedRange.endContainer, this.selectedRange.endOffset ); } catch (ex) { /*IE*/ document.body.createTextRange().select(); document.selection.empty(); } /*恢复保存的范围*/ selection.addRange(this.selectedRange); } }, returnPage() { this.$router.go(-1); }, editChange() { // console.log(this.$refs.editor.children); let that = this; if (this.$refs.editor.children.length == 0) { this.$refs.editor.value = `<p></p>`; // setTimeout(() => { // that.keepLastIndex(e.target); // }, 5); } }, //获取光标 getCaret() {}, //设置光标 setCaret() {}, //保存光标 saveCaret() {}, //插入节点 insertHtmlAtCaret(html) { let sel, range; if (window.getSelection) { // IE9 and non-IE sel = window.getSelection(); if (sel.getRangeAt && sel.rangeCount) { range = sel.getRangeAt(0); range.deleteContents(); // Range.createContextualFragment() would be useful here but is // non-standard and not supported in all browsers (IE9, for one) let el = document.createElement("div"); el.innerHTML = html; let frag = document.createDocumentFragment(), node, lastNode; while ((node = el.firstChild)) { lastNode = frag.appendChild(node); } range.insertNode(frag); // Preserve the selection if (lastNode) { range = range.cloneRange(); range.setStartAfter(lastNode); range.collapse(true); sel.removeAllRanges(); sel.addRange(range); } } } else if (document.selection && document.selection.type != "Control") { // IE < 9 document.selection.createRange().pasteHTML(html); } }, //光标定位在末尾 keepLastIndex(obj) { if (window.getSelection) { //ie11 10 9 ff safari obj.focus(); //解决ff不获取焦点无法定位问题 var range = window.getSelection(); //创建range range.selectAllChildren(obj); //range 选择obj下所有子内容 range.collapseToEnd(); //光标移至最后 } else if (document.selection) { //ie10 9 8 7 6 5 var range = document.selection.createRange(); //创建选择对象 //var range = document.body.createTextRange(); range.moveToElementText(obj); //range定位到obj range.collapse(false); //光标移至最后 range.select(); } }, //粘贴事件处理 async pasteText(e) { e.stopPropagation(); e.preventDefault(); let text; if (navigator.clipboard) { text = await navigator.clipboard.readText(); } else { text = e.clipboardData.getData("text/plain"); } let self = this; // 在等待一段时间后,在当前光标位置,粘贴处理后的文本 setTimeout(function () { let selection = document.getSelection(); let cursorPos = selection.anchorOffset; let oldContent = selection.anchorNode.nodeValue; // 通过 Dom 去除所有样式 // let oDiv = document.createElement("div"); // oDiv.innerHTML = pasteData; let toInsert = text; let newContent = oldContent.substring(0, cursorPos) + toInsert + oldContent.substring(cursorPos); selection.anchorNode.nodeValue = newContent; // if(window.navigator.userAgent.indexOf('AppleWebKit')>-1){ let rag = document.createRange(); rag.selectNodeContents(selection.anchorNode); //必须传node rag.collapse(false); let sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(rag); // } // console.log(selection); // let range=selection.getRangeAt(0); // range.setStart(range.startContainer,parseInt(cursorPos+toInsert.length)); // console.log(range); }, 200); return false; } } }) // document.onselectionchange = function() { // console.log('New selection made'); // let selection = document.getSelection(); // console.log(selection.type); // } </script> </html> ```

JavaScript 一键复制不兼容ios求解决方法

代码如下 ``` function copyUrl2() { var Url2=document.getElementById("Copy").innerText; var oInput = document.createElement('input'); oInput.value = Url2; document.body.appendChild(oInput); oInput.select(); // 选择对象 document.execCommand("Copy"); // 执行浏览器复制命令 oInput.className = 'oInput'; oInput.style.display='none'; layer.msg('复制成功'); } ``` 在ios下执行有提示复制成功,还会弹出输入法,但是并没有复制到内容。安卓下正常,本人对JavaScript 是小白 希望有大神给指导下 或者帮忙写一段

ie8中复制可以,但是ie11中报错

if (window.clipboardData){ //var content = document.body.innerHTML; var printTable = document.getElementById("printTable"); var therange=document.body.createTextRange(); therange.moveToElementText(printTable); therange.select(); therange.execCommand("Copy"); alert('复制成功!'); } ie11中报错: SCRIPT606: 由于出现错误 800a025e 而导致此项操作无法完成。 怎么解决?

如何使用exec.Command()打开Chrome窗口?

<div class="post-text" itemprop="text"> <p>I would like to wrote a Go program to open a Chrome window with the URL passed to it as parameters.</p> <p>So I wrote something like this.</p> <pre class="lang-golang prettyprint-override"><code>package main import "os" import "os/exec" import "strings" func main() { args := "--app=" + strings.Join(os.Args\[1:\], "") exec.Command("\\"C:\\\\Program Files (x86)\\\\Google\\\\Chrome Dev\\\\Application\\\\chrome.exe\\"", args).Start() } </code></pre> <p>But when I run the program <code>go run ".\abc.go" "https://google.com"</code>, nothing happens.</p> <p>I tried <code>exec.Command("cmd", "\\C", "start", "\"C:\\Program Files (x86)\\Google\\Chrome Dev\\Application\\chrome.exe\"", args).Start()</code> too but no luck.</p> </div>

window系统下开发hadoop2.2出现报错

Exception in thread "main" java.io.IOException: Cannot run program "E:\hadoop-2.4.0\bin\winutils.exe": CreateProcess error=216, ӳÏñÎļþ %1 ÓÐЧ£¬µ«²»ÊÊÓÃÓڴ˼ÆË at java.lang.ProcessBuilder.start(Unknown Source) at org.apache.hadoop.util.Shell.runCommand(Shell.java:404) at org.apache.hadoop.util.Shell.run(Shell.java:379) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:589) at org.apache.hadoop.util.Shell.execCommand(Shell.java:678) at org.apache.hadoop.util.Shell.execCommand(Shell.java:661) at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:639) at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:435) at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:277) at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:125) at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:344) at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1268) at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1265) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Unknown Source) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491) at org.apache.hadoop.mapreduce.Job.submit(Job.java:1265) at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1286) at WordCount.main(WordCount.java:84) Caused by: java.io.IOException: CreateProcess error=216, ӳÏñÎļþ %1 ÓÐЧ£¬µ«²»ÊÊÓÃÓڴ˼ÆË at java.lang.ProcessImpl.create(Native Method) at java.lang.ProcessImpl.<init>(Unknown Source) at java.lang.ProcessImpl.start(Unknown Source) ... 19 more

HTML怎么导出Word文档

之前使用的是document.execCommand("saveAs",false,"c:\\name.doc"), 可是导出后里面的图片无法显示![图片说明](https://img-ask.csdn.net/upload/201902/27/1551254192_877618.png)<br> 以上是导出后的结果. 这种情况该怎么办......... 在线等..............................

.load()不显示加载的内容

<div class="post-text" itemprop="text"> <p>I have a scrip that when the user selects a category it will load the content in a <code>div</code>. I also have a script that if you click a <code>pre</code> tag will select and copy the text. The thing is that is not working when the content has been loaded, btw sorry for my english <a href="http://letraspiolas.com/mytest.html" rel="nofollow noreferrer">here a example</a> and here here is my code </p> <p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code"> <pre class="snippet-code-js lang-js prettyprint-override"><code>$(document).ready(function() { $("#esto").on("change", function() { var vale = this.value $("#divcontent").load("http://letraspiolas.com/" + vale + ".html"); }); }); (function() { function selectText(a) { var b = document, text = a, range, selection; if (b.body.createTextRange) { range = b.body.createTextRange(); range.moveToElementText(text); range.select() } else if (window.getSelection) { selection = window.getSelection(); range = b.createRange(); range.selectNodeContents(text); selection.removeAllRanges(); selection.addRange(range) } } preTags = document.getElementsByTagName("pre"); for (var i = 0; i &lt; preTags.length; i++) { preTags[i].onclick = function() { selectText(this); document.execCommand("copy") } } })();</code></pre> <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt; &lt;body&gt; &lt;select id="esto" data-placeholder="select a category..."&gt; &lt;option value=""&gt;select&lt;/option&gt; &lt;option value="test"&gt; test &lt;/option&gt; &lt;option value="test1"&gt;test1&lt;/option&gt;&lt;/select&gt; &lt;div id="divcontent"&gt; &lt;pre&gt;this text can be select and copy&lt;/pre&gt; &lt;/div&gt; &lt;/body&gt;</code></pre> </div> </div> <p>This is the content of the <strong>test.html</strong>:</p> <pre><code>&lt;h3&gt;title&lt;/h3&gt; &lt;div class="kghjghjg"&gt; &lt;pre&gt;____i want to select this&lt;/pre&gt; &lt;pre&gt;_____and this&lt;/pre&gt; &lt;div class="clear"&gt;&lt;/div&gt; &lt;/div&gt; </code></pre> </div>

在光标位置后插入图片问题

我使用了 ``` document.execCommand("insertImage", false,html); ``` 但是这个html只能是图片的url ,现在我想在光标位置插入图片。 一个思路是先插入图片在用正则匹配替换,但是我的图片scr的值用了base64编码 很长,用 ``` var reg=new RegExp('<img src="'+html+'">','gi'); ``` 这正正则匹配说表达式错误。 请问有什么好办法吗? 直接在光标位置插入图片

前端的有关IE兼容性的问题(图片的下载)

通过canvas画图, 然后生成图片,方式如下: var myc = document.getElementById("myCanvas"); var ctx=myc.getContext("2d"); var image = new Image(); ctx.clearRect(0,0,800,800);//清空一波画布 ctx.drawImage(一些参数);//画一张图片 image.src = myc.toDataURL("image/png");//生成这张图片,并将格式设定为png (生成这里貌似就出了问题,在火狐,谷歌之类的浏览器,进行了这一步之后是可以再图片上右击,然后进行图片的存储的,可是IE不行,IE的图片另存为那一栏是灰色的) 最后进行下载到本地, var _fixType = function(type) { type = type.toLowerCase().replace(/jpg/i, 'jpeg'); var r = type.match(/png|jpeg|bmp|gif/)[0]; return 'image/' + r; }; // 加工image data,替换mime type imgData = imgData.replace(_fixType(type),'image/octet-stream'); /** * 在本地进行文件保存 * @param {String} data 要保存到本地的图片数据 * @param {String} filename 文件名 */ var saveFile = function(data, filename){ var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a'); save_link.href = data; save_link.download = filename; var event = document.createEvent('MouseEvents'); event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); save_link.dispatchEvent(event); }; // 下载后的问题名 var filename = 'baidufe_' + (new Date()).getTime() + '.' + type; // download saveFile(imgData,filename); 然而这段代码就是在IE里面运行不了,火狐,谷歌之类都试过都可以正常运行,正常生成图片,并进行下载。 然后我在网上找了这么一段代码: var imgURL = img.src; var oPop = window.open(imgURL,"","width=1, height=1, top=5000, left=5000"); for(; oPop.document.readyState != "complete"; ) { if (oPop.document.readyState == "complete")break; } oPop.document.execCommand("SaveAs"); oPop.close(); 我发现当图片的路径地址URL确定的时候,就是说页面中的图片确实存在,且有真实路径的情况下是可以进行下载的(在IE下),但是在我用canvas画图画出来的图片再来进行存储的时候for(; oPop.document.readyState != "complete"; )这一行代码报错,报的错意思就是oPop不可为null之类的空值,原错是:无法获取未定义或 null 引用的属性“document”。 求各位大神帮忙看看吧,实在是没招儿了。

RTE无法在线工作

<div class="post-text" itemprop="text"> <p>I've developed a dynamic site where I've used rich text editor. When I change font color, size and highlight the text, enter url link into content, it perfectly works in my local server but when I upload my site, these functions didn't work online. I don't know where has problem occurred. Is there anyone genius who could help me to sort out this problem? Thanks in advance.</p> <p>Since I couldn't post any new questions, I'm editing my old question coz I don't have any choice. </p> <p>I'm just praying that if anyone genius who would solve my problem.</p> <p><strong>* My RTE javascript goes like this*</strong></p> <pre><code>var isRichText = false; var rng; var currentRTE; var allRTEs = ""; var isIE; var isGecko; var isSafari; var isKonqueror; var imagesPath; var includesPath; var cssFile; function initRTE(imgPath, incPath, css) { //set browser vars var ua = navigator.userAgent.toLowerCase(); isIE = ((ua.indexOf("msie") != -1) &amp;&amp; (ua.indexOf("opera") == -1) &amp;&amp; (ua.indexOf("webtv") == -1)); isGecko = (ua.indexOf("gecko") != -1); isSafari = (ua.indexOf("safari") != -1); isKonqueror = (ua.indexOf("konqueror") != -1); //check to see if designMode mode is available if (document.getElementById &amp;&amp; document.designMode &amp;&amp; !isSafari &amp;&amp; !isKonqueror) { isRichText = true; } if (isIE) { document.onmouseover = raiseButton; document.onmouseout = normalButton; document.onmousedown = lowerButton; document.onmouseup = raiseButton; } //set paths vars imagesPath = imgPath; includesPath = incPath; cssFile = css; if (isRichText) document.writeln('&lt;style type="text/css"&gt;@import "' + includesPath + 'rte.css";&lt;/style&gt;'); //for testing standard textarea, uncomment the following line //isRichText = false; } function writeRichText(rte, html, width, height, buttons, readOnly) { if (isRichText) { if (allRTEs.length &gt; 0) allRTEs += ";"; allRTEs += rte; if (readOnly) buttons = false; //adjust minimum table widths if (isIE) { if (buttons &amp;&amp; (width &lt; 800)) width = 650; var tablewidth = width; } else { if (buttons &amp;&amp; (width &lt; 800)) width = 650; var tablewidth = width + 4; } document.writeln('&lt;div class="rteDiv"&gt;'); if (buttons == true) { document.writeln('&lt;table class="rteBack" cellpadding=2 cellspacing=0 id="Buttons1_' + rte + '" width="' + tablewidth + '"&gt;'); document.writeln(' &lt;tr&gt;'); document.writeln(' &lt;td&gt;'); document.writeln(' &lt;select id="formatblock_' + rte + '" onchange="selectFont(\'' + rte + '\', this.id);"&gt;'); document.writeln(' &lt;option value=""&gt;[Style]&lt;/option&gt;'); document.writeln(' &lt;option value="&lt;p&gt;"&gt;Paragraph &amp;lt;p&amp;gt;&lt;/option&gt;'); document.writeln(' &lt;option value="&lt;h1&gt;"&gt;Heading 1 &amp;lt;h1&amp;gt;&lt;/option&gt;'); document.writeln(' &lt;option value="&lt;h2&gt;"&gt;Heading 2 &amp;lt;h2&amp;gt;&lt;/option&gt;'); document.writeln(' &lt;option value="&lt;h3&gt;"&gt;Heading 3 &amp;lt;h3&amp;gt;&lt;/option&gt;'); document.writeln(' &lt;option value="&lt;h4&gt;"&gt;Heading 4 &amp;lt;h4&amp;gt;&lt;/option&gt;'); document.writeln(' &lt;option value="&lt;h5&gt;"&gt;Heading 5 &amp;lt;h5&amp;gt;&lt;/option&gt;'); document.writeln(' &lt;option value="&lt;h6&gt;"&gt;Heading 6 &amp;lt;h6&amp;gt;&lt;/option&gt;'); document.writeln(' &lt;option value="&lt;address&gt;"&gt;Address &amp;lt;ADDR&amp;gt &lt;/option&gt;'); document.writeln(' &lt;option value="&lt;pre&gt;"&gt;Formatted &amp;lt;pre&amp;gt;&lt;/option&gt;'); document.writeln(' &lt;/select&gt;'); document.writeln(' &lt;/td&gt;'); document.writeln(' &lt;td&gt;'); document.writeln(' &lt;select id="fontname_' + rte + '" onchange="selectFont(\'' + rte + '\', this.id)"&gt;'); document.writeln(' &lt;option value="Font" selected&gt;[Font]&lt;/option&gt;'); document.writeln(' &lt;option value="Arial, Helvetica, sans-serif"&gt;Arial&lt;/option&gt;'); document.writeln(' &lt;option value="Courier New, Courier, mono"&gt;Courier New&lt;/option&gt;'); document.writeln(' &lt;option value="Times New Roman, Times, serif"&gt;Times New Roman&lt;/option&gt;'); document.writeln(' &lt;option value="Verdana, Arial, Helvetica, sans-serif"&gt;Verdana&lt;/option&gt;'); document.writeln(' &lt;/select&gt;'); document.writeln(' &lt;/td&gt;'); document.writeln(' &lt;td&gt;'); document.writeln(' &lt;select unselectable="on" id="fontsize_' + rte + '" onchange="selectFont(\'' + rte + '\', this.id);"&gt;'); document.writeln(' &lt;option value="Size"&gt;[Size]&lt;/option&gt;'); document.writeln(' &lt;option value="1"&gt;1&lt;/option&gt;'); document.writeln(' &lt;option value="2"&gt;2&lt;/option&gt;'); document.writeln(' &lt;option value="3"&gt;3&lt;/option&gt;'); document.writeln(' &lt;option value="4"&gt;4&lt;/option&gt;'); document.writeln(' &lt;option value="5"&gt;5&lt;/option&gt;'); document.writeln(' &lt;option value="6"&gt;6&lt;/option&gt;'); document.writeln(' &lt;option value="7"&gt;7&lt;/option&gt;'); document.writeln(' &lt;/select&gt;'); document.writeln(' &lt;/td&gt;'); document.writeln(' &lt;td width="100%"&gt;'); document.writeln(' &lt;/td&gt;'); document.writeln(' &lt;/tr&gt;'); document.writeln('&lt;/table&gt;'); document.writeln('&lt;table class="rteBack" cellpadding="0" cellspacing="0" id="Buttons2_' + rte + '" width="' + tablewidth + '"&gt;'); document.writeln(' &lt;tr&gt;'); document.writeln(' &lt;td&gt;&lt;img id="bold" class="rteImage" src="' + imagesPath + 'bold.gif" width="25" height="24" alt="Bold" title="Bold" onClick="rteCommand(\'' + rte + '\', \'bold\', \'\')"&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'italic.gif" width="25" height="24" alt="Italic" title="Italic" onClick="rteCommand(\'' + rte + '\', \'italic\', \'\')"&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'underline.gif" width="25" height="24" alt="Underline" title="Underline" onClick="rteCommand(\'' + rte + '\', \'underline\', \'\')"&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt=""&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'left_just.gif" width="25" height="24" alt="Align Left" title="Align Left" onClick="rteCommand(\'' + rte + '\', \'justifyleft\', \'\')"&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'centre.gif" width="25" height="24" alt="Center" title="Center" onClick="rteCommand(\'' + rte + '\', \'justifycenter\', \'\')"&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'right_just.gif" width="25" height="24" alt="Align Right" title="Align Right" onClick="rteCommand(\'' + rte + '\', \'justifyright\', \'\')"&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'justifyfull.gif" width="25" height="24" alt="Justify Full" title="Justify Full" onclick="rteCommand(\'' + rte + '\', \'justifyfull\', \'\')"&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt=""&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'hr.gif" width="25" height="24" alt="Horizontal Rule" title="Horizontal Rule" onClick="rteCommand(\'' + rte + '\', \'inserthorizontalrule\', \'\')"&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt=""&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'numbered_list.gif" width="25" height="24" alt="Ordered List" title="Ordered List" onClick="rteCommand(\'' + rte + '\', \'insertorderedlist\', \'\')"&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'list.gif" width="25" height="24" alt="Unordered List" title="Unordered List" onClick="rteCommand(\'' + rte + '\', \'insertunorderedlist\', \'\')"&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt=""&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'outdent.gif" width="25" height="24" alt="Outdent" title="Outdent" onClick="rteCommand(\'' + rte + '\', \'outdent\', \'\')"&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'indent.gif" width="25" height="24" alt="Indent" title="Indent" onClick="rteCommand(\'' + rte + '\', \'indent\', \'\')"&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;div id="forecolor_' + rte + '"&gt;&lt;img class="rteImage" src="' + imagesPath + 'textcolor.gif" width="25" height="24" alt="Text Color" title="Text Color" onClick="dlgColorPalette(\'' + rte + '\', \'forecolor\', \'\')"&gt;&lt;/div&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;div id="hilitecolor_' + rte + '"&gt;&lt;img class="rteImage" src="' + imagesPath + 'bgcolor.gif" width="25" height="24" alt="Background Color" title="Background Color" onClick="dlgColorPalette(\'' + rte + '\', \'hilitecolor\', \'\')"&gt;&lt;/div&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt=""&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'hyperlink.gif" width="25" height="24" alt="Insert Link" title="Insert Link" onClick="insertLink(\'' + rte + '\')"&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'image.gif" width="25" height="24" alt="Add Image" title="Add Image" onClick="addImage(\'' + rte + '\')"&gt;&lt;/td&gt;'); document.writeln(' &lt;td&gt;&lt;div id="table_' + rte + '"&gt;&lt;img class="rteImage" src="' + imagesPath + 'insert_table.gif" width="25" height="24" alt="Insert Table" title="Insert Table" onClick="dlgInsertTable(\'' + rte + '\', \'table\', \'\')"&gt;&lt;/div&gt;&lt;/td&gt;'); if (isIE) { document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'spellcheck.gif" width="25" height="24" alt="Spell Check" title="Spell Check" onClick="checkspell()"&gt;&lt;/td&gt;'); } // document.writeln(' &lt;td&gt;&lt;img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt=""&gt;&lt;/td&gt;'); // document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'cut.gif" width="25" height="24" alt="Cut" title="Cut" onClick="rteCommand(\'' + rte + '\', \'cut\')"&gt;&lt;/td&gt;'); // document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'copy.gif" width="25" height="24" alt="Copy" title="Copy" onClick="rteCommand(\'' + rte + '\', \'copy\')"&gt;&lt;/td&gt;'); // document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'paste.gif" width="25" height="24" alt="Paste" title="Paste" onClick="rteCommand(\'' + rte + '\', \'paste\')"&gt;&lt;/td&gt;'); // document.writeln(' &lt;td&gt;&lt;img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt=""&gt;&lt;/td&gt;'); // document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'undo.gif" width="25" height="24" alt="Undo" title="Undo" onClick="rteCommand(\'' + rte + '\', \'undo\')"&gt;&lt;/td&gt;'); // document.writeln(' &lt;td&gt;&lt;img class="rteImage" src="' + imagesPath + 'redo.gif" width="25" height="24" alt="Redo" title="Redo" onClick="rteCommand(\'' + rte + '\', \'redo\')"&gt;&lt;/td&gt;'); document.writeln(' &lt;td width="100%"&gt;&lt;/td&gt;'); document.writeln(' &lt;/tr&gt;'); document.writeln('&lt;/table&gt;'); } document.writeln('&lt;iframe id="' + rte + '" name="' + rte + '" width="' + width + 'px" height="' + height + 'px" src="' + includesPath + 'blank.htm"&gt;&lt;/iframe&gt;'); if (!readOnly) document.writeln('&lt;br /&gt;&lt;input type="checkbox" id="chkSrc' + rte + '" onclick="toggleHTMLSrc(\'' + rte + '\');" /&gt;&amp;nbsp;View Source'); document.writeln('&lt;iframe width="154" height="104" id="cp' + rte + '" src="' + includesPath + 'palette.htm" marginwidth="0" marginheight="0" scrolling="no" style="visibility:hidden; position: absolute;"&gt;&lt;/iframe&gt;'); document.writeln('&lt;input type="hidden" id="hdn' + rte + '" name="' + rte + '" value=""&gt;'); document.writeln('&lt;/div&gt;'); document.getElementById('hdn' + rte).value = html; enableDesignMode(rte, html, readOnly); } else { if (!readOnly) { document.writeln('&lt;textarea name="' + rte + '" id="' + rte + '" style="width: ' + width + 'px; height: ' + height + 'px;"&gt;' + html + '&lt;/textarea&gt;'); } else { document.writeln('&lt;textarea name="' + rte + '" id="' + rte + '" style="width: ' + width + 'px; height: ' + height + 'px;" readonly&gt;' + html + '&lt;/textarea&gt;'); } } } function enableDesignMode(rte, html, readOnly) { var frameHtml = "&lt;html id=\"" + rte + "\"&gt; "; frameHtml += "&lt;head&gt; "; //to reference your stylesheet, set href property below to your stylesheet path and uncomment if (cssFile.length &gt; 0) { frameHtml += "&lt;link media=\"all\" type=\"text/css\" href=\"" + cssFile + "\" rel=\"stylesheet\"&gt; "; } else { frameHtml += "&lt;style&gt; "; frameHtml += "body { "; frameHtml += " background: #FFFFFF; "; frameHtml += " margin: 0px; "; frameHtml += " padding: 0px; "; frameHtml += "} "; frameHtml += "&lt;/style&gt; "; } frameHtml += "&lt;/head&gt; "; frameHtml += "&lt;body&gt; "; frameHtml += html + " "; frameHtml += "&lt;/body&gt; "; frameHtml += "&lt;/html&gt;"; if (document.all) { var oRTE = frames[rte].document; oRTE.open(); oRTE.write(frameHtml); oRTE.close(); if (!readOnly) oRTE.designMode = "On"; } else { try { if (!readOnly) document.getElementById(rte).contentDocument.designMode = "on"; try { var oRTE = document.getElementById(rte).contentWindow.document; oRTE.open(); oRTE.write(frameHtml); oRTE.close(); if (isGecko &amp;&amp; !readOnly) { //attach a keyboard handler for gecko browsers to make keyboard shortcuts work oRTE.addEventListener("keypress", kb_handler, true); } } catch (e) { alert("Error preloading content."); } } catch (e) { //gecko may take some time to enable design mode. //Keep looping until able to set. if (isGecko) { setTimeout("enableDesignMode('" + rte + "', '" + html + "', " + readOnly + ");", 10); } else { return false; } } } } function updateRTEs() { var vRTEs = allRTEs.split(";"); for (var i = 0; i &lt; vRTEs.length; i++) { updateRTE(vRTEs[i]); } } function updateRTE(rte) { if (!isRichText) return; //set message value var oHdnMessage = document.getElementById('hdn' + rte); var oRTE = document.getElementById(rte); var readOnly = false; //check for readOnly mode if (document.all) { if (frames[rte].document.designMode != "On") readOnly = true; } else { if (document.getElementById(rte).contentDocument.designMode != "on") readOnly = true; } if (isRichText &amp;&amp; !readOnly) { //if viewing source, switch back to design view if (document.getElementById("chkSrc" + rte).checked) { document.getElementById("chkSrc" + rte).checked = false; toggleHTMLSrc(rte); } if (oHdnMessage.value == null) oHdnMessage.value = ""; if (document.all) { oHdnMessage.value = frames[rte].document.body.innerHTML; } else { oHdnMessage.value = oRTE.contentWindow.document.body.innerHTML; } //if there is no content (other than formatting) set value to nothing if (stripHTML(oHdnMessage.value.replace("&amp;nbsp;", " ")) == "" &amp;&amp; oHdnMessage.value.toLowerCase().search("&lt;hr") == -1 &amp;&amp; oHdnMessage.value.toLowerCase().search("&lt;img") == -1) oHdnMessage.value = ""; //fix for gecko if (escape(oHdnMessage.value) == "%3Cbr%3E%0D%0A%0D%0A%0D%0A") oHdnMessage.value = ""; } } function rteCommand(rte, command, option) { //function to perform command var oRTE; if (document.all) { oRTE = frames[rte]; } else { oRTE = document.getElementById(rte).contentWindow; } try { oRTE.focus(); oRTE.document.execCommand(command, false, option); oRTE.focus(); } catch (e) { // alert(e); // setTimeout("rteCommand('" + rte + "', '" + command + "', '" + option + "');", 10); } } function toggleHTMLSrc(rte) { //contributed by Bob Hutzel (thanks Bob!) var oRTE; if (document.all) { oRTE = frames[rte].document; } else { oRTE = document.getElementById(rte).contentWindow.document; } if (document.getElementById("chkSrc" + rte).checked) { showHideElement("Buttons1_" + rte, "hide"); showHideElement("Buttons2_" + rte, "hide"); if (document.all) { oRTE.body.innerText = oRTE.body.innerHTML; } else { var htmlSrc = oRTE.createTextNode(oRTE.body.innerHTML); oRTE.body.innerHTML = ""; oRTE.body.appendChild(htmlSrc); } } else { showHideElement("Buttons1_" + rte, "show"); showHideElement("Buttons2_" + rte, "show"); if (document.all) { //fix for IE var output = escape(oRTE.body.innerText); output = output.replace("%3CP%3E%0D%0A%3CHR%3E", "%3CHR%3E"); output = output.replace("%3CHR%3E%0D%0A%3C/P%3E", "%3CHR%3E"); oRTE.body.innerHTML = unescape(output); } else { var htmlSrc = oRTE.body.ownerDocument.createRange(); htmlSrc.selectNodeContents(oRTE.body); oRTE.body.innerHTML = htmlSrc.toString(); } } } function dlgColorPalette(rte, command) { //function to display or hide color palettes setRange(rte); //get dialog position var oDialog = document.getElementById('cp' + rte); var buttonElement = document.getElementById(command + '_' + rte); var iLeftPos = getOffsetLeft(buttonElement); var iTopPos = getOffsetTop(buttonElement) + (buttonElement.offsetHeight + 4); oDialog.style.left = (iLeftPos) + "px"; oDialog.style.top = (iTopPos) + "px"; if ((command == parent.command) &amp;&amp; (rte == currentRTE)) { //if current command dialog is currently open, close it if (oDialog.style.visibility == "hidden") { showHideElement(oDialog, 'show'); } else { showHideElement(oDialog, 'hide'); } } else { //if opening a new dialog, close all others var vRTEs = allRTEs.split(";"); for (var i = 0; i &lt; vRTEs.length; i++) { showHideElement('cp' + vRTEs[i], 'hide'); } showHideElement(oDialog, 'show'); } //save current values parent.command = command; currentRTE = rte; } function dlgInsertTable(rte, command) { //function to open/close insert table dialog //save current values setRange(rte); parent.command = command; currentRTE = rte; var windowOptions = 'history=no,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=no,resizable=no,width=360,height=200'; window.open(includesPath + 'insert_table.htm', 'InsertTable', windowOptions); } function insertLink(rte) { //function to insert link var szURL = prompt("Enter a URL:", ""); try { //ignore error for blank urls rteCommand(rte, "Unlink", null); rteCommand(rte, "CreateLink", szURL); } catch (e) { //do nothing } } function setColor(color) { //function to set color var rte = currentRTE; var parentCommand = parent.command; if (document.all) { //retrieve selected range var sel = frames[rte].document.selection; if (parentCommand == "hilitecolor") parentCommand = "backcolor"; if (sel != null) { var newRng = sel.createRange(); newRng = rng; newRng.select(); } } rteCommand(rte, parentCommand, color); showHideElement('cp' + rte, "hide"); } function addImage(rte) { //function to add image imagePath = prompt('Enter Image URL:', 'http://'); if ((imagePath != null) &amp;&amp; (imagePath != "")) { rteCommand(rte, 'InsertImage', imagePath); } } // Ernst de Moor: Fix the amount of digging parents up, in case the RTE editor itself is displayed in a div. // KJR 11/12/2004 Changed to position palette based on parent div, so palette will always appear in proper location regardless of nested divs function getOffsetTop(elm) { var mOffsetTop = elm.offsetTop; var mOffsetParent = elm.offsetParent; var parents_up = 2; //the positioning div is 2 elements up the tree while(parents_up &gt; 0) { mOffsetTop += mOffsetParent.offsetTop; mOffsetParent = mOffsetParent.offsetParent; parents_up--; } return mOffsetTop; } // Ernst de Moor: Fix the amount of digging parents up, in case the RTE editor itself is displayed in a div. // KJR 11/12/2004 Changed to position palette based on parent div, so palette will always appear in proper location regardless of nested divs function getOffsetLeft(elm) { var mOffsetLeft = elm.offsetLeft; var mOffsetParent = elm.offsetParent; var parents_up = 2; while(parents_up &gt; 0) { mOffsetLeft += mOffsetParent.offsetLeft; mOffsetParent = mOffsetParent.offsetParent; parents_up--; } return mOffsetLeft; } function selectFont(rte, selectname) { //function to handle font changes var idx = document.getElementById(selectname).selectedIndex; // First one is always a label if (idx != 0) { var selected = document.getElementById(selectname).options[idx].value; var cmd = selectname.replace('_' + rte, ''); rteCommand(rte, cmd, selected); document.getElementById(selectname).selectedIndex = 0; } } function kb_handler(evt) { var rte = evt.target.id; //contributed by Anti Veeranna (thanks Anti!) if (evt.ctrlKey) { var key = String.fromCharCode(evt.charCode).toLowerCase(); var cmd = ''; switch (key) { case 'b': cmd = "bold"; break; case 'i': cmd = "italic"; break; case 'u': cmd = "underline"; break; }; if (cmd) { rteCommand(rte, cmd, null); // stop the event bubble evt.preventDefault(); evt.stopPropagation(); } } } function insertHTML(html) { //function to add HTML -- thanks dannyuk1982 var rte = currentRTE; var oRTE; if (document.all) { oRTE = frames[rte]; } else { oRTE = document.getElementById(rte).contentWindow; } oRTE.focus(); if (document.all) { oRTE.document.selection.createRange().pasteHTML(html); } else { oRTE.document.execCommand('insertHTML', false, html); } } function showHideElement(element, showHide) { //function to show or hide elements //element variable can be string or object if (document.getElementById(element)) { element = document.getElementById(element); } if (showHide == "show") { element.style.visibility = "visible"; } else if (showHide == "hide") { element.style.visibility = "hidden"; } } function setRange(rte) { //function to store range of current selection var oRTE; if (document.all) { oRTE = frames[rte]; var selection = oRTE.document.selection; if (selection != null) rng = selection.createRange(); } else { oRTE = document.getElementById(rte).contentWindow; var selection = oRTE.getSelection(); rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange(); } } function stripHTML(oldString) { //function to strip all html var newString = oldString.replace(/(&lt;([^&gt;]+)&gt;)/ig,""); //replace carriage returns and line feeds newString = newString.replace(/ /g," "); newString = newString.replace(/ /g," "); newString = newString.replace(/ /g," "); //trim string newString = trim(newString); return newString; } function trim(inputString) { // Removes leading and trailing spaces from the passed string. Also removes // consecutive spaces and replaces it with one space. If something besides // a string is passed in (null, custom object, etc.) then return the input. if (typeof inputString != "string") return inputString; var retValue = inputString; var ch = retValue.substring(0, 1); while (ch == " ") { // Check for spaces at the beginning of the string retValue = retValue.substring(1, retValue.length); ch = retValue.substring(0, 1); } ch = retValue.substring(retValue.length - 1, retValue.length); while (ch == " ") { // Check for spaces at the end of the string retValue = retValue.substring(0, retValue.length - 1); ch = retValue.substring(retValue.length - 1, retValue.length); } // Note that there are two spaces in the string - look for multiple spaces within the string while (retValue.indexOf(" ") != -1) { // Again, there are two spaces in each of the strings retValue = retValue.substring(0, retValue.indexOf(" ")) + retValue.substring(retValue.indexOf(" ") + 1, retValue.length); </code></pre> <p>} return retValue; // Return the trimmed string back to the user }</p> <pre><code>//***************** //IE-Only Functions //***************** function checkspell() { //function to perform spell check try { var tmpis = new ActiveXObject("ieSpell.ieSpellExtension"); tmpis.CheckAllLinkedDocuments(document); } catch(exception) { if(exception.number==-2146827859) { if (confirm("ieSpell not detected. Click Ok to go to download page.")) window.open("http://www.iespell.com/download.php","DownLoad"); } else { alert("Error Loading ieSpell: Exception " + exception.number); } } } function raiseButton(e) { //IE-Only Function var el = window.event.srcElement; className = el.className; if (className == 'rteImage' || className == 'rteImageLowered') { el.className = 'rteImageRaised'; } } function normalButton(e) { //IE-Only Function var el = window.event.srcElement; className = el.className; if (className == 'rteImageRaised' || className == 'rteImageLowered') { el.className = 'rteImage'; } } function lowerButton(e) { //IE-Only Function var el = window.event.srcElement; className = el.className; if (className == 'rteImage' || className == 'rteImageRaised') { el.className = 'rteImageLowered'; } } </code></pre> </div>

尝试使用exec.Command在golang中执行python(

<div class="post-text" itemprop="text"> <pre><code>func execPython(fPath, colName, srv string) (){ fmt.Println("Inside execPython") cmd:= "python rfsvmchurn.py" arg0 := "-fp " + fPath arg1 := "-srv " + srv arg2 := "-col " + colName if err := exec.Command(cmd, arg0, arg1, arg2).Run(); err != nil { fmt.Println("Python Execution Error :",err) } </code></pre> <p>}</p> <p>getting error Python Execution Error : exec: "python rfsvmchurn.py": executable file not found in $PATH</p> </div>

火狐兼容性问题,如何实现点击按钮弹出一个saveAs

在IE下可以用document.execCommand("saveas",false,"t.txt")实现,但火狐似乎不行,网上搜了一圈未找到可替代的代码,有人说火狐不支持execCommand,有人说支持但是不支持saveAs命令,故在此求助各位达人,功德无量。

java调用linux语句,第一个脚本的返回结果是第二个脚本的入参,怎样调用

问题一: 执行多个linux控制台脚本,比如第一个脚本的返回结果是第二个脚本的入参。 比如说我想要先查看进程,然后杀死他,杀死他的时候需要进程号,这个怎样操作? 下面这样? ``` Session session=con.openSession(); session.execCommand("ps -ef | grep /home/aa/aaa.jar"); Session sess = con.openSession(); sess.execCommand("kill -9 正常情况下这是PID"); ``` 问题二: 我知道查看进程再杀死他可以用一条语句完成,但是我之后想要在重启进程,然后查看是否重启成功。 这样就要再次查看重启的进程是否有进程号,就要调用之前的查看进程语句。 因此我没办法把他们写成一条语句。 那么问题来了,怎样调用之前的查看进程语句? 问题三: 上述查看进程号的语句ps -ef | grep /home/aa/aaa.jar中文件夹名字:aa和问价aaa.jar 都是写springboot作为参数传递进来的,那么就不能在程序中体现出来,这样在 session.execCommand("ps -ef | grep /home/aa/aaa.jar"); 怎样改动?正常情况下网址可以相加“+”,但是在这个语句中我不知道该怎样修改。

不能用execcommand函数导出除了txt,htm,html,以外的格式。

我的客户端是WIN7,IE8 在用document.execCommand("saveas",true,"name.xls"); 导出后的界面,支持的文件格式只有txt,htm,html。 我依照IE7的修改方法: [HKEY_CLASSES_ROOT\.xls] “PerceivedType”=”document” [HKEY_CLASSES_ROOT\.xlt] “PerceivedType”=”document” 还是没用,请大神们帮忙解决。

有什么办法可以在exec.Command中执行多个命令?

<div class="post-text" itemprop="text"> <p>I am trying to execute set of commands in Go using <code>exec.Command()</code>. Where I am trying to detach Gluster peer using Docker Exec.</p> <pre><code>fmt.Println("About to execute gluster peer detach") SystemdockerCommand := exec.Command("sh", "-c", "docker exec ", "9aa1124", " gluster peer detach ", "192.168.1.1", " force") var out bytes.Buffer var stderr bytes.Buffer SystemdockerCommand.Stdout = &amp;out SystemdockerCommand.Stderr = &amp;stderr err := SystemdockerCommand.Run() if err != nil { fmt.Println(fmt.Sprint(err) + ": " + stderr.String()) } fmt.Println("System Docker exec : " + out.String()) </code></pre> <p>I was expecting a result as "no peer to detatch". But got exit status 1: "docker exec" requires at least 2 arguments.</p> </div>

为会么SurfaceControl.screenshot返回null?

这两天在搞android后台截屏,试了目前网上的各种方式,基本都失败了,反编译了Vysor,参考他的实现,但SurfaceControl.screenshot返回总是null,不知道是哪里有问题,请高手指点! PS:我的手机已ROOT,CommandLine.execCommand是用root权限执行的。 demo代码如下: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final String packageName = getPackageName(); ApplicationInfo appInfo = null; List<ApplicationInfo> apps = MainActivity.this.getPackageManager().getInstalledApplications(0); for (ApplicationInfo app : apps) { if (packageName.equals(app.packageName)) { appInfo = app; break; } } final String sourcePath = appInfo.sourceDir; new Thread() { @Override public void run() { String savePath = "/sdcard/temp/"; for (int i = 0; i < 30; i++) { String saveFile = savePath + (i+1) + ".png"; StringBuilder command=new StringBuilder() .append("CLASSPATH=" + sourcePath) .append(" /system/bin/app_process32 /system/bin " + packageName + ".Main 720 1280 0 " + saveFile); CommandLine.CommandResult commandResult = CommandLine.execCommand(command.toString(), true, true); if (commandResult.successMsg != null && (commandResult.successMsg.contains("Success") || commandResult.successMsg.contains("success"))) { Log.d("demo", "success"); } try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } } } }.start(); } } public class Main { public static void main(String[] args) { System.out.println("screencap start"); if (args.length < 4) { System.out.println("invalid parameters"); System.exit(1); } try { int width = Integer.parseInt(args[0]); int height = Integer.parseInt(args[1]); int rotation = Integer.parseInt(args[2]); String savePath = args[3]; System.out.println("width: " + width); System.out.println("height: " + height); System.out.println("rotation: " + rotation); System.out.println("savePath: " + savePath); Bitmap bitmap = screenshot(width, height, rotation); if (bitmap == null) { System.out.println("screencap return null"); System.exit(1); } if (savePic(bitmap, savePath)) { System.out.println("screencap success [" + savePath + "]"); System.exit(0); } } catch (Exception e) { e.printStackTrace(); } System.exit(1); } private static Bitmap screenshot(int width, int height, int rotation) throws Exception { String surfaceClassName; if (Build.VERSION.SDK_INT <= 17) { surfaceClassName = "android.view.Surface"; } else { surfaceClassName = "android.view.SurfaceControl"; } Class localClass = Class.forName(surfaceClassName); Class[] arrayOfClass = new Class[2]; arrayOfClass[0] = Integer.TYPE; arrayOfClass[1] = Integer.TYPE; Method localMethod = localClass.getDeclaredMethod("screenshot", arrayOfClass); Object[] arrayOfObject = new Object[2]; arrayOfObject[0] = Integer.valueOf(width); arrayOfObject[1] = Integer.valueOf(height); Bitmap b = (Bitmap)localMethod.invoke(null, arrayOfObject); //Bitmap b = (Bitmap) Class.forName(surfaceClassName).getDeclaredMethod("screenshot", new Class[]{Integer.TYPE, Integer.TYPE}).invoke(null, new Object[]{width, height}); if (b == null) { System.out.println("screenshot fail"); return null; } if (rotation == 0) { return b; } Matrix m = new Matrix(); if (rotation == 1) { m.postRotate(-90.0f); } else if (rotation == 2) { m.postRotate(-180.0f); } else if (rotation == 3) { m.postRotate(-270.0f); } return Bitmap.createBitmap(b, 0, 0, width, height, m, false); } // 保存图片到Sd卡中 private static boolean savePic(Bitmap bitmap, String strName) { FileOutputStream fos = null; try { fos = new FileOutputStream(strName); if (null != fos) { bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos); fos.flush(); fos.close(); return true; } } catch (Exception e) { e.printStackTrace(); } return false; } }

关于一个Onclick切换样式的问题

想做个点击<li>切换图片的功能,现在碰到一个问题,原本设想的效果是点击一个<li>时背景色变为白色字体变为黑色,再次点击另外一个<li>时原先那个<li>再次变为默认颜色(黑色背景白色字体),但是试了很久都没达到效果。请各位帮忙看看,谢谢。 [code="javascript"]window.onload=function setImage(){ var number=document.getElementById("number"); var list=number.getElementsByTagName("li"); for (var i=0;i<list.length;i++){ list[i].flag=true; list[i].onclick=function(){ var img=document.getElementsByTagName("img"); for (var i=0;i<img.length;i++){ if(img[i].src.indexOf(this.lastChild.nodeValue)!=-1){ img[i].style.display=""; var h3=document.getElementsByTagName("h3")[0]; h3.lastChild.nodeValue=img[i].title; }else{ img[i].style.display="none"; } if(this.flag==true){ this.style.backgroundColor="#000"; this.style.color="#FFF"; this.flag=false; } if(this.flag==false){ this.style.backgroundColor="#FFF"; this.style.color="#000"; this.flag=true; } } } } }[/code] [code="css"]<style type="text/css"> *{ margin:0; padding:0; } #wrapper{ margin:10px; width:380px; height:230px; } ul#number{ position:absolute; left: 288px; top: 160px; } #number li{ float:left; margin-right:10px; border:1px solid #FFF; list-style:none; width:20px; height:20px; color:#fff; text-align:center; cursor:pointer; background:#000; color:#FFF; } #numbercolor{ background:#FFF; color:#000; } #title{ width:380px; height:50px; background:#000; opacity:0.55; filter: alpha(opacity=55); position:absolute; margin-top:180px; z-index: 999; } #wrapper h3{ font-size:14px; color:#FFF; position:absolute; margin-top:180px; line-height:50px; width:380px; height:50px; z-index:1000; text-align:center; } </style>[/code] [code="html"]<div id="wrapper"> <ul id="number"> <li>1</li> <li>2</li> <li>3</li> </ul> <h3>[资源] 测试测试测试</h3> <div id="title"></div> <img src="images/1.jpg" title="[资源] 测试测试测试" /> <img src="images/2.jpg" title="[资源] 测试测试测试" style="display:none;"/> <img src="images/3.jpg" title="[资源] 测试测试测试" style="display:none;"/> </div> [/code]

非ie浏览器打开文件保存对话框方法

非ie浏览器打开文件保存对话框方法。document.execCommand("saveas")只能在ie下运行。无法再谷歌火狐等运行。

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

删库了,我们一定要跑路吗?

在工作中,我们误删数据或者数据库,我们一定需要跑路吗?我看未必,程序员一定要学会自救,神不知鬼不觉的将数据找回。 在 mysql 数据库中,我们知道 binlog 日志记录了我们对数据库的所有操作,所以 binlog 日志就是我们自救的利器。 接下来就来开启程序员自救之路。 想要自救成功,binlog 这把利器一定要好,在自己之前,我们一定要确定我们有 binlog 这把利器,以下就是确保有 bi...

再不跳槽,应届毕业生拿的都比我多了!

跳槽几乎是每个人职业生涯的一部分,很多HR说“三年两跳”已经是一个跳槽频繁与否的阈值了,可为什么市面上有很多程序员不到一年就跳槽呢?他们不担心影响履历吗? PayScale之前发布的**《员工最短任期公司排行榜》中,两家码农大厂Amazon和Google**,以1年和1.1年的员工任期中位数分列第二、第四名。 PayScale:员工最短任期公司排行榜 意外的是,任期中位数极小的这两家公司,薪资...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

华为初面+综合面试(Java技术面)附上面试题

华为面试整体流程大致分为笔试,性格测试,面试,综合面试,回学校等结果。笔试来说,华为的难度较中等,选择题难度和网易腾讯差不多。最后的代码题,相比下来就简单很多,一共3道题目,前2题很容易就AC,题目已经记不太清楚,不过难度确实不大。最后一题最后提交的代码过了75%的样例,一直没有发现剩下的25%可能存在什么坑。 笔试部分太久远,我就不怎么回忆了。直接将面试。 面试 如果说腾讯的面试是挥金如土...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

现代的 “Hello, World”,可不仅仅是几行代码而已

作者 |Charles R. Martin译者 | 弯月,责编 | 夕颜头图 |付费下载自视觉中国出品 | CSDN(ID:CSDNnews)新手...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

程序员毕业去大公司好还是小公司好?

虽然大公司并不是人人都能进,但我仍建议还未毕业的同学,尽力地通过校招向大公司挤,但凡挤进去,你这一生会容易很多。 大公司哪里好?没能进大公司怎么办?答案都在这里了,记得帮我点赞哦。 目录: 技术氛围 内部晋升与跳槽 啥也没学会,公司倒闭了? 不同的人脉圈,注定会有不同的结果 没能去大厂怎么办? 一、技术氛围 纵观整个程序员技术领域,哪个在行业有所名气的大牛,不是在大厂? 而且众所...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

立即提问
相关内容推荐