บังคับให้% s หนีจากช่องว่างด้วยเครื่องหมายบวกแทนที่จะเป็นร้อยละยี่สิบ


9

ฉันต้องการใช้ mc เป็นทางลัดการค้นหาสำหรับ metacritic.com จาก Google Chrome ฉันตั้งค่า URL การค้นหาต่อไปนี้สำหรับทางลัด:

http://metacritic.com/search/all/%s/results

น่าเสียดายที่เมื่อฉันค้นหา patrician iii ดังต่อไปนี้

mc patrcian iii

Chrome สร้างข้อความค้นหานี้ซึ่งการตีความแบบ metacritic นั้นทำให้เกิดชุดผลลัพธ์ที่ไม่เกี่ยวข้อง:

http://www.metacritic.com/search/all/patrician%20iii/results

ริติคชอบคำค้นหานี้โดยให้ผลลัพธ์ที่ฉันต้องการ:

http://www.metacritic.com/search/all/patrician+iii/results

ฉันจะบังคับให้ Chrome ใช้เครื่องหมายบวกแทนที่จะเป็นช่องว่างที่เข้ารหัส URL ได้อย่างไร


(IE ช่วยให้คุณสามารถเลือกอักขระการหลบหนีที่ใช้สำหรับหลาย ๆ อัน Chrome devs รู้ดีกว่าผู้ใช้:-|)
Synetech

คำตอบ:


4

แม้ว่าจะค่อนข้างหยาบ แต่คุณสามารถสร้างส่วนขยาย Chrome แบบง่ายที่ปรับ URL สำหรับ metacritic (หรือไซต์อื่น ๆ หากคุณต้องการ)

นี่คือรหัสที่ฉันใช้สำหรับส่วนขยายการแทนที่ URL การค้นหาริติค:

manifest.json:

{
    "content_scripts": [ {
    "include_globs": [ "http://www.metacritic.com/search/*%20*" ],
    "js": [ "script.js" ],
        "matches": [ "http://*/*", "https://*/*" ],
        "run_at": "document_start"
    } ],
    "converted_from_user_script": true,
    "description": "Replaces '%20' in metacritic search request to '+'",
    "name": "Metacritic search replacer",
    "version": "0.1"
}

script.js:

window.location = window.location.href.replace(/%20/g, "+");

เนื่องจากฉันไม่มีจุดที่เชื่อถือได้จริง ๆ ในการอัปโหลดส่วนขยายของฉันนี่คือคำแนะนำในการสร้างส่วนขยาย Chrome โดยใช้สองไฟล์เหล่านี้:

ก่อนอื่นให้วางไฟล์ทั้งสองไว้ในโฟลเดอร์ที่มีอยู่แล้วเรียกดู chrome: // extensions ตรวจสอบให้แน่ใจว่าโหมดนักพัฒนาซอฟต์แวร์ทำงานอยู่ (ดูที่ด้านขวาบนของหน้าเพื่อเปิดใช้งาน) ที่นี่คุณสามารถเลือก 'Pack extension .. ' ซึ่งจะถามคุณเกี่ยวกับโฟลเดอร์ที่สคริปต์ของคุณอยู่ เมื่อคุณเลือกโฟลเดอร์นี้ส่วนขยายจะถูกสร้างขึ้นและคุณสามารถลากและวางลงใน Chrome เพื่อติดตั้ง หากทุกอย่างเป็นไปตามแผนสคริปต์จะเขียน URL ใหม่สำหรับคำขอค้นหาริติคจากอักขระ '% 20' ไปเป็นอักขระ '+'

ตอนนี้คุณสามารถใช้http://metacritic.com/search/all/%s/resultsเป็นเครื่องมือค้นหา URL ใน Chrome เองเพื่อใช้ทางลัดในการค้นหานี้

หวังว่านี่จะช่วย .. ;)


นี่มันดูดีจริงๆ คุณสามารถอัปโหลดไปยังGitHubหรืออะไรก็ได้
slhck

นี่คือส่วนขยาย (.crx) และแหล่งที่มา: ลิงก์
JiriB

5

คุณไม่จำเป็นต้องใช้รูปแบบ REST ในการค้นหา แต่สามารถใช้พารามิเตอร์ HTTP GET ปกติดังนี้

http://www.metacritic.com/search/all/results?search_term=test+query

ดังนั้นในกรณีของคุณที่จะ:

http://www.metacritic.com/search/all/results?search_term=%s

น่าเสียดายที่นี่ใช้ไม่ได้กับ Metacricic (?)

สิ่งที่ดีที่สุดที่ฉันจะได้รับคือฟังก์ชั่นการค้นหาต่อไปนี้ แต่มันไม่ได้เปลี่ยนเส้นทางจริงๆด้วยเหตุผลบางอย่าง:

data:text/html;charset=utf-8,<script>var s = "%s"; s = s.replace("%20", "+"); var url = "http://www.metacritic.com/search/all/" + s + "/results"; window.location = url;</script>

ข้อมูลความเป็นมา:

Chrome เข้ารหัสพารามิเตอร์ที่ส่งขึ้นอยู่กับตำแหน่งเช่นถ้าอยู่ใน URL หรือเป็นพารามิเตอร์ GET ภายในการ URL มันทำให้รู้สึกถึงแปลงพื้นที่ไป%20ในขณะที่ในพารามิเตอร์+ถูกนำมาใช้

น่าเสียดายที่พวกเขาไม่ได้เปลี่ยนพฤติกรรมนี้ดังนั้นฉันเดาว่าคงจะเป็นเพราะ Javascript ที่เรียบง่ายสามารถแก้ไขปัญหานี้ได้ ฉันจะดูมัน


คุณลองหรือยัง ใช้งานไม่ได้กับ patrician iii
sheldonh

ระบบจำนวนมากใช้การเขียน HTTP ซ้ำเพื่อจับคู่ชื่อเส้นทางกับคำขอ HTTP GET
Majenko

@sheldonh น่าสนใจเพราะคำค้นหาถูกแทรกอย่างถูกต้องฉันจะตรวจสอบมัน
slhck

@slhck ใช่สิ่งที่คุณกำลังทำจริงๆควรจะทำงาน ขอบคุณสำหรับเวลาและความสนใจของคุณ
sheldonh

@sheldonh ฉันพบวิธีและแก้ไขโพสต์ของฉันโชคไม่ดีที่ Chrome ยังไม่ได้เปลี่ยนเส้นทาง
slhck

3

ตามที่อธิบายโดย slhck ในคำตอบของเขา Chrome สนับสนุนเฉพาะ% s และยืนยันที่ "ชาญฉลาด" เพื่อพิจารณาว่าจะใช้เครื่องหมายบวกหรือ%20เพื่อหลีกเลี่ยงช่องว่าง (ดูChromium bug 78429 )

กรณีทดสอบเฉพาะที่ฉันติดต่อด้วย (metacritic.com) กำหนดให้มีการวนซ้ำซ้อนมากเกินกว่าที่จะข้ามผ่านไปพร้อม ๆ กับอินเตอร์เฟสการค้นหา RESTful

ดังนั้นเพื่อเป็นการหลีกเลี่ยงปัญหาฉันเลือกที่จะใช้อินเทอร์เฟซดั้งเดิมของ app.metacritic.com:

http://apps.metacritic.com/search/process?tfs=game_title&sb=0&game_platform=PC&­ts=%s

หากยังไม่พร้อมใช้งานฉันจะติดต่อ metacritic.com เรียกพวกเขาไปยัง Chromium bug และขอความเมตตา :-)


เห็นได้ชัดว่าสิ่งนี้หยุดทำงาน :-(
A. Donda

1

ฉันไม่สามารถติดตั้ง. crx หรือ. js ได้อย่างเหมาะสม (อาจเป็นความผิดของฉัน)

ฉันจัดการเพื่อให้มันทำงานได้โดยอาศัยสคริปต์ greasemonkey (ฉันใช้ชื่อบุคคลใช้ส่วนขยาย Tampermonkey google chrome เพื่อจัดการสคริปต์ greasemonkey)

ครั้งหนึ่งใน Tampermonkey ฉันสร้างสคริปต์ใหม่และวางสิ่งต่อไปนี้ (และใช้งานได้! ขอขอบคุณ JiriB อีกครั้งเพราะฉันเพิ่งคัดลอก / วางข้อค้นพบของเขา):

// ==UserScript==
// @name         Google-Chrome-URL-Replacer-Extension (Metacritic)
// @namespace    https://github.com/FjearJiri/Google-Chrome-URL-Replacer-Extension/
// @version      1.0
// @description  Replaces %20 with + in URLs in order to build valid URLS for search engine shortcuts
// @include      http://www.metacritic.com/search/*%20*
// @copyright    2011+, FjearJiri ('ported' to greasemonkey script by zifnab)
// ==/UserScript==
// http://superuser.com/questions/281934/forcing-s-to-escape-spaces-with-plus-instead-of-percent-twenty
window.location = window.location.href.replace(/%20/g, "+");

1

ฉันมีปัญหากับสิ่งเดียวกันนี้และพบหน้านี้ น่าเสียดายที่คำตอบนั้นซับซ้อนเกินไปหรือเช่นแนวคิดการค้นหาแบบดั้งเดิมไม่ได้ผลแล้วฉันก็จำได้ว่าสิ่งที่ฉันเคยทำกับ metacritic ซึ่งก็คือการค้นหาด้วย google เพราะเครื่องมือค้นหา metacritics นั้นแย่มาก (ยังคงเป็น จริง ๆ ) ดังนั้นสิ่งที่ฉันทำคือสร้างการค้นหา google และทำให้การค้นหา metacritic ของฉัน:

https://www.google.com/search?gcx=w&ix=c2&sourceid=chrome&ie=UTF-8&q=site%3Ametacritic.com+%s

เห็นได้ชัดว่ามันไม่เหมาะในที่ที่คุณไม่ได้รับหน้าผลลัพธ์การค้นหาที่ดีของ metacritic แต่มันให้ผลลัพธ์ที่มีประโยชน์ ฉันยังสร้างเวอร์ชันเฉพาะของช่อง ตัวอย่างเช่นหากฉันต้องการค้นหารายการทีวีฉันใช้เอ็นจิ้นเดียวกันกับที่เพิ่ม "/ tv /"


1

แก้ไข:ฉันได้เพิ่มส่วนขยายพื้นฐานนี้ลงใน Chrome Store ฉันยังเพิ่มไอคอน แต่ไม่ได้เปลี่ยนรหัส Yay ตอนนี้ Chrome สามารถทำได้และฉันสามารถลบออกจากโฟลเดอร์ดาวน์โหลดได้! Link เป็น: ผู้ให้บริการค้นหาริติค

โพสต์ต้นฉบับ : ฉันได้อัปเดตรหัสส่วนขยายของ JiriB เพื่อให้ทำงานได้ใน Chrome อีกครั้ง! มันต้องการเพียงหนึ่งบรรทัดพิเศษจริงๆ ฉันไม่เคยใช้ github มาก่อน แต่ฉันแยกโครงการของเขาและส่งคำขอดึง

manifest.json:

{
"content_scripts": [ {
"include_globs": [ "http://www.metacritic.com/search/*%20*" ],
"js": [ "script.js" ],
    "matches": [ "http://*/*", "https://*/*" ],
    "run_at": "document_start"
} ],
"converted_from_user_script": true,
"description": "Replaces '%20' in metacritic search request to '+'",
"name": "Metacritic search fixer",
"manifest_version": 2,
"version": "0.2.2"
}

script.js:

window.location = window.location.href.replace(/%20/g, "+");

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.